Javascript引用复制的问题

时间:2018-06-18 13:00:24

标签: javascript angularjs

我有一个原始数组,我这样初始化:

$scope.rawUsers = angular.copy($scope.users);
然后我按照这样修改一些数据:

function filterUsers(searchString, onlyMine) {

$scope.users = [];

_.find($scope.rawUsers, function (itm) {

    var groups = [];


    if (onlyMine) {
        if (!itm.IsMine)
            return;
        var hasGroup = false;
        _.find(itm.Groups, function (group) {



            if (lowercaseGroups.indexOf(searchString) != -1) {
                hasGroup = true;

                groups.push(group);
            }

        });

        if (hasGroup) {
            itm.Groups = groups;
            $scope.users.push(itm);
        }

    } else {
        if (itm.IsMine)
            return;

        $scope.users.push(itm);
    }

});


}

如何修复它以便原始值不会丢失?

1 个答案:

答案 0 :(得分:1)

您可以使用传播语法,例如

import { interval } from "rxjs";
const observable = interval(1000);

这将为您提供数组$scope.rawUsers = [...$scope.users]; 的新副本,而无需任何参考。

  

Spread语法允许在可能需要零个或多个参数(用于函数调用)或元素(用于数组文字)的位置扩展数组表达式或字符串等迭代,或者在需要扩展的位置扩展对象表达式预期零个或多个键值对(对象文字)

如需进一步阅读,请访问here

如果你想使用$scope.users函数,那么你可以使用angularjs,因为它创建了一个源的深层副本,它应该是一个对象或一个数组。这将是:

angular.copy()