-2

我在 JSON 中得到重复的值。我想用新的值替换以前的值。

var obj = {};
obj.Product_Id = product_id;
obj.Qty = j;
var arr = [];
arr.push(obj);
var json = JSON.stringify(arr);

输出为 [{"Product_id":1,"Qty":1},{"Product_id":2,"Qty":1},{"Product_id":1,"Qty":2}]

我希望这是 [{"Product_id":1,"Qty":2},{"Product_id":2,"Qty":1}]

如果键重复其值,则应替换前一个而不添加重复值

4

1 回答 1

0

如果要维护唯一键,则必须使用此键删除任何现有元素,然后添加新对象

var arr = ...;
var newObj = ...;
arr = arr.filter(function(el) { return el.Product_id != newObj.Product_id; });
arr.push(newObj);

如果您想维护顺序并知道具有此键的元素已经存在,您可以使用map

var arr = ...;
var newObj = ...;
arr = arr.map(function(el) {
    if (el.Product_id != newObj.Product_id)
        return el;

    return newObj;
});

有关 Array 方法和属性的参考,您可以查看Array.

于 2013-02-03T13:57:37.067 回答