JS对象数组合并:相同属性保留第二个值,缺失属性取第一个值
实现方案
核心逻辑
按要求,合并规则为:
- 仅保留第一个数组对象
users[0]上存在的属性 - 同名属性优先使用第二个数组对象
products[0]的值 - 第二个对象独有的属性不纳入最终结果
代码实现
首先修正原始代码的语法错误(数组赋值用等号、补全属性间逗号):
let users = [ { "id": "some#", "name": "some name", "data": "somedata" } ]; let products = [ { "product": "some#", "name": "abc" } ];
兼容写法(所有JS环境可用)
const user = users[0]; const product = products[0]; const result = {}; for (const key in user) { if (user.hasOwnProperty(key)) { result[key] = product.hasOwnProperty(key) ? product[key] : user[key]; } }
简洁写法(ES2019+ 支持)
const result = Object.fromEntries( Object.entries(users[0]).map(([k, v]) => [k, products[0][k] ?? v]) );
输出结果
执行后result的内容和预期完全一致:
{ "id": "some#", "name": "abc", "data": "somedata" }
内容的提问来源于stack exchange,提问作者Antonio Pavicevac-Ortiz
相关产品推荐
相关产品推荐

