gpt4 book ai didi

javascript - 如何通过对象键推送和替换数组中的值

转载 作者:行者123 更新时间:2023-12-01 02:05:04 25 4
gpt4 key购买 nike

我想知道是否可以将对象推送到数组,并且 id data-seats 是否已存在,在下次单击时替换/覆盖该值。

代码:

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

最佳答案

I'm wondering if it's possible to push an object to an array and if the id data-seats already exists replace/overwrite the value on next click.

是的(见下文),但是如果您正在寻找一种通过唯一键存储内容的结构,那么数组实际上并不是您的最佳选择。一个对象(使用 Object.create(null) 创建,因此它不会继承任何属性)或 Map将是一个更好的选择。那么你就这样做

// With an object
active_filters["data-seats"] = (active_filters["data-seats"] || 0) + 1;

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

这些之所以有效,是因为如果 data-seats 不在 active_filters 对象/Map 上,active_filters["data-seats"]/active_filters.get("data-seats")未定义,并且 未定义 || 00。 (然后我们将其加 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});
}

关于javascript - 如何通过对象键推送和替换数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com