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

JavaScript数组嵌套对象搜索与更新:基于v_id处理计数

没问题,我来帮你搞定这个需求!

解决方案

我们可以通过数组的find()方法快速定位目标对象,再根据匹配结果执行对应的更新或新增操作,具体代码实现如下:

let vendors = [
  { v_id: 'red', count: 2 },
  { v_id: 'blue', count: 3 },
  { v_id: 'green', count: 1 }
];

let foo = { user_type: 'Other', v_id: 'blue' };

// 查找与foo.v_id匹配的供应商对象
const matchedVendor = vendors.find(vendor => vendor.v_id === foo.v_id);

if (matchedVendor) {
  // 找到匹配项,count属性加1
  matchedVendor.count++;
} else {
  // 未找到匹配项,添加新的供应商对象到数组
  vendors.push({ v_id: foo.v_id, count: 1 });
}

// 打印结果验证(可选)
console.log(vendors);

代码逻辑说明

  • vendors.find(...):遍历数组,返回第一个v_id与foo.v_id相等的对象;如果没有匹配项,会返回undefined
  • 条件分支:找到匹配对象时直接修改其count值;未找到时,向数组中添加一个以foo.v_id为标识、初始count为1的新对象

如果需要批量处理多个foo类型的对象,可以把逻辑封装成复用函数:

function updateVendorsList(vendors, targetObj) {
  const matched = vendors.find(item => item.v_id === targetObj.v_id);
  matched ? matched.count++ : vendors.push({ v_id: targetObj.v_id, count: 1 });
}

// 调用示例
updateVendorsList(vendors, foo);

这样后续处理任意同类型对象时,直接调用函数就可以啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:21:09