javascript - 检查 obj 是否存在并推送到数组

标签 javascript angularjs arrays json

我想迭代 JSON 响应,检查键、值是否存在,如果不存在,则将其添加到数组中。

  $scope.InitProdToArray = function (data) {
    angular.forEach($scope.data.obj.Product, function(value, index) {

        if (value.Product_type != 'T' ) {
            $scope.data.obj.Product.push({Product_type: 'T'});
        }
        if (value.Product_type != '16364NB' ) {
            $scope.data.obj.Product.push({Product_type: '16364NB'});
        }
        if (value.Product_type != '39087NB' ) {
            $scope.data.obj.Product.push({Product_type: '39087NB'});
        }
        if (value.Product_type != 'C' ) {
            $scope.data.obj.Product.push({Product_type: 'C'});
        }
        if (value.Product_type != '4NB' ) {
            $scope.data.obj.Product.push({Product_type: '4NB'});
        }        
    });

  JSON: $scope.data.obj.Product = 
                    [{
                        "Count": 28,
                        "Product_type": "T"
                    }, {
                        "Count": 88,
                        "Product_type": "4NB"
                    }, {
                        "Count": 20,
                        "Product_type": "C"
                    }, {
                        "Count": 3,
                        "Product_type": "39087NB"
                    }
                ]

这似乎不起作用,因为每次迭代每个节点时我都会推送键值对。我最终得到了一个具有多个相同的product_type 的JSON。

是否有办法阻止代码添加额外的键、值(如果已经存在)?

最佳答案

你的类型检查似乎写反了。 而不是 if (value.Product_type != 'T' ) {... 我会想象类似 if (value.Product_type == 'T' ) {... code> 这样,仅当类型匹配时,您才会推送到 Product 数组。

除此之外,您还可以在推送之前检查 Product 数组是否已包含该类型的键: if($scope.data.obj.Product.indexOf(value. Product_type)!==未定义)

关于javascript - 检查 obj 是否存在并推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799820/

相关文章:

javascript - 增加 jQuery Mobile slider handle 的可点击区域

javascript - 在 Canvas 标签中移动和清除线条

javascript - 如何从数组中获取随机值?

javascript - 在 AngularJS 应用程序中登录后动态更改菜单

angularjs - 在我的应用程序初始加载时,为什么未设置 ui-router 状态?

angularjs - 100% 堆积条形图

计算一个句子的字母给出随机输出

java - 使用数组和各种类计算总利润java

c - 为什么这会给我一个段错误?

c# - 如何在 C# 中将包含 HTML 的字符串呈现为图像?