我有一个这样的函数:
$scope.saveSearch = function () {
var alreadyExist = false;
for (var i = 0; i < $scope.savedSearch.length; i++) {
if (JSON.stringify($scope.searched) === JSON.stringify($scope.savedSearch[i])) {
alreadyExist = true;
break;
}
}
if (!alreadyExist) {
$scope.savedSearch.push($scope.searched);
localStorage.setItem("savedSearch", JSON.stringify($scope.savedSearch));
}
};
在此之前:$scope.savedSearch = [];
$scope.searched = {
IS: "",
area: "",
block: "",
type: "",
level: ""
};
$scope.searched
对象中的值由用户初始化然后修改。
我的问题是:
$scope.savedSearch
始终仅包含最后推送的对象。它不是将对象添加到数组中,而是替换当前对象。
我不明白为什么。
最佳答案
您需要将推送线更改为:
$scope.savedSearch.push(angular.copy($scope.searched));
我相信您的问题是对象是通过引用传递的。由于savedSearch 中的对象始终指向您正在搜索的确切对象,因此alreadyExist 将始终为true。
关于javascript - 将对象插入数组会删除而不是添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433179/