在javascript中推送JSON数组中的不同对象

时间:2017-05-08 18:19:47

标签: json

我有一个JSON对象:

var retrieveSections=[{key:1, label:"James Smith"} ];

我想在其中推送其他一些对象:

retrieveSections.push({key:5, label:"Joelle Six"});

但是当我尝试使用相同的键和标签添加另一个对象时,我不希望将它添加到我的JSON对象中。所以我不想再次推送这个对象:

retrieveSections.push({key:5, label:"Joelle Six"});

1 个答案:

答案 0 :(得分:1)

  

我不希望它被添加到我的JSON对象中。所以我不想再次推送这个对象

您必须先进行搜索,看看是否已存在key的条目。

if (!retrieveSections.some(function(entry) { return entry.key === newEntry.key;})) {
    retrieveSections.push(newEntry);
}

或者在现代JavaScript(ES2015 +)中:

if (!retrieveSections.some(entry => entry.key === newEntry.key)) {
    retrieveSections.push(newEntry);
}

但是你使用唯一键的事实表明你可能想要一个对象或Map而不是一个数组,至少在你构建时,要更快地检查预先存在的键。然后,当你完成后,你可以从结果中生成一个数组,如果它需要是一个数组。