zoukankan      html  css  js  c++  java
  • JavaScript数组倒序函数reverse()

    左边为原数组,右边为array.reverse()的结果:

     

    函数很简单,但是

                var temp = ChartConfig.getMonthData();
                $scope.monthList = temp.reverse();
                console.log('ChartConfig.getMonthData()          '+ChartConfig.getMonthData());
                console.log('$scope.monthList                    '+$scope.monthList);

    这段代码在反复运行时,却出现了问题,结果如下:

    temp做的倒序运算,却改变了原数据,可以猜测是引用传递而不是值传递

    再把函数中的原数据打印看看:

                getMonthData: function () {
                    console.log("函数中原数据                         "+scope.chartConfig.xAxis.categories);
                    return scope.chartConfig.xAxis.categories;
                }

    两次运行结果:

    可见,在赋值后,每次调用reverse都会重新复制,而且能改变原数组元素。

    要想多次运行得到一样的排列顺序,必须在某一地方打断引用传递,具体怎么做还没想到

  • 相关阅读:
    hdu5081
    hdu5079
    hdu5076
    hdu5072
    codeforces 739E
    codeforces 739D
    2017.2其他简要题解
    spring事务传播回滚策略
    mybatis一级缓存和二级缓存
    spring-boot-mybatis-starter工作原理
  • 原文地址:https://www.cnblogs.com/lurenjia1994/p/7250811.html
Copyright © 2011-2022 走看看