javascript - 将对象插入数组会删除而不是添加

标签 javascript html arrays angularjs object

我有一个这样的函数:

$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/

相关文章:

javascript - 为什么这个计算不正确?

javascript - 呈现 div 背景图像后的 jQuery 事件

php - 如何检测对象是否在 PHP 中可遍历?

javascript - 为什么json文件最后要加31

javascript - 使用 Twitter API 时的身份验证问题

javascript - 无法通过 XMLHttpRequest 发送大型 json 数据 - javascript

javascript - 添加 onClick 事件到 document.createElement ("th")

javascript - 从url中提取数据后如何在html中显示值

c - 如何在C中将字符 '1'和字符 '0'转换为整数10?

javascript - 表中的树状连接器(HTML/CSS/原型(prototype))