Javascript 引用复制问题

标签 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);
    }

});


}

如何修复它才能不丢失原始值?

最佳答案

您可以使用扩展语法,例如

$scope.rawUsers = [...$scope.users];

这将为您提供数组 $scope.users 的新副本,而无需任何引用。

Spread syntax allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where zero or more key-value pairs (for object literals) are expected

欲了解更多信息,请访问here

如果您想使用 angularjs 函数,那么您可以使用 angular.copy() ,因为它会创建源的深拷贝,该副本应该是一个对象或一个大批。这将是这样的:

$scope.rawUsers = angular.copy($scope.users);

关于Javascript 引用复制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50910124/

相关文章:

javascript - 如何将输入元素 (text/select/radio) 的值发送到 node.js 服务器

javascript - 固定 Div 内的相对 DIV 内的绝对 DIV 在滚动时消失

javascript - 如何从 Angular Controller 打开模态

javascript - 在 View 中迭代 JSON

javascript - 我可以以 60fps 运行 Angular 的摘要循环来显示快速计时器吗?

angularjs - @angular/router 在 angular.js 应用程序中不起作用

javascript - 检查元素的特殊值

javascript - 如何从谷歌地图中删除额外信息

javascript - Accordion 面板默认打开 - 如何更改它

javascript - 如何在 Angular 中设置选择默认选项?