如何按对象键推送和替换数组中的值

时间:2018-05-04 14:47:18

标签: javascript jquery arrays

我想知道是否可以将对象推送到数组,如果id data-seats已经存在,请替换/覆盖下次点击时的值。

代码:

var active_filters = [];
$("a").on('click', function() {
    active_filters.push({id: "data-seats", value: increment_value });
});

1 个答案:

答案 0 :(得分:2)

  

我想知道是否可以将对象推送到数组,如果id数据席已经存在,则替换/覆盖下次单击时的值。

是(见下文),但如果您正在寻找一个通过唯一键存储东西的结构,那么阵列并不是您的最佳选择。一个对象(使用Object.create(null)创建,因此它不会继承任何属性)或Map将是更好的选择。然后你就是

// With a Map
active_filters.set("data-seats", (active_filters.get("data-seats") || 0) + 1);

data-seats

这些工作是因为如果active_filters对象/地图上active_filters["data-seats"]不是active_filters.get("data-seats") / undefined undefined || 0,{{1}是0。 (然后我们为它添加1,并设置新值。)

但是您可以使用数组执行此操作:使用find查看对象是否已存在,然后更新它,如果不存在则添加它,或者如果不存在则添加它:

var obj = active_filters.find(function(entry) { return entry.id === "data-seats"; });
if (obj) {
    ++obj.value;
} else {
   active_filters.push({id: "data-seats", value: 1});
}