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

如何用ES6简洁实现按索引合并两个无共同属性的对象数组?

解决方案

可以利用ES6的扩展运算符结合可选链操作符(ES2020)实现简洁的合并逻辑,既保留数组a的所有元素,又避免数组长度不一致时的报错:

let m = a.map((item, index) => ({
  ...item,
  day: b[index]?.day
}));

说明:

  • ...item:将数组a中对象的所有属性展开到新对象中,比手动指定id更通用,能适配a对象属性扩展的场景。
  • b[index]?.day:使用可选链操作符,当b[index]不存在(即索引超出b的长度)时,表达式返回undefined,不会触发"Cannot read properties of undefined"的错误。

如果运行环境不支持可选链,可用短路求值替代:

let m = a.map((item, index) => ({
  ...item,
  day: b[index] && b[index].day
}));

进阶:不添加多余的day属性

若希望当b对应索引无元素时,新对象中不出现day属性,可结合条件对象展开:

let m = a.map((item, index) => ({
  ...item,
  ...(b[index] && { day: b[index].day })
}));

这种写法基于函数式风格,比forEach更简洁且符合ES6+编码习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:25:43