我有一个原始数组,我像这样初始化:
$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/