You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在数组中推送对象并替换已存在的data-seats对应值?

嘿,我来帮你搞定这个需求!

解决方案

你的核心需求是:点击链接时,若数组里已有id: "data-seats"的对象就覆盖它的value值,没有则新增这个对象。我们可以通过先查找再判断的逻辑来实现:

  • 用findIndex()方法定位数组中是否存在目标对象:它会返回第一个匹配元素的索引,找不到则返回-1
  • 根据索引结果执行不同操作:存在就更新value,不存在就推送新对象

修改后的代码如下:

var active_filters = []; 
$("a").on('click', function() {
  // 查找数组中id为"data-seats"的元素索引
  const seatItemIndex = active_filters.findIndex(item => item.id === "data-seats");
  
  if (seatItemIndex !== -1) {
    // 已有该对象,直接覆盖value值
    active_filters[seatItemIndex].value = increment_value;
  } else {
    // 没有该对象,推送新的对象到数组
    active_filters.push({id: "data-seats", value: increment_value });
  }
});

额外说明

  • findIndex()是ES6标准方法,现代浏览器都支持;如果要兼容非常老旧的浏览器,可以换成for循环手动遍历查找索引
  • 这个逻辑能保证数组里始终最多只有一个id: "data-seats"的对象,完全满足你“重复点击就覆盖”的需求

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:03:49