如何在JavaScript中将常量对象数组合并到API返回对象数组的每个对象中?
解决方案:将常量对象合并到API返回数组的每个元素中
你的需求是把temp数组内的对象属性,合并到response_from_api的每一个对象里,这里给出两种实用实现方式:
方法一:生成新数组(推荐,不修改原数据)
用Array.map()遍历API返回数组,结合对象扩展运算符...合并属性,生成全新数组,不会改动原数组,更符合JavaScript的最佳实践:
// 改用const声明常量,避免var的变量提升问题 const temp = [{ 'key1': 'valu1', 'key2': 'val2' }]; const response_from_api = [ { "created_date": "2022-07-28", "tank_type": "2" }, { "created_date": "2022-07-28", "tank_type": "1" } ]; // 取出temp数组里的目标对象 const tempObj = temp[0]; // 遍历合并每个对象,生成新数组 const mergedArray = response_from_api.map(item => ({ ...item, // 保留原对象的所有属性 ...tempObj // 合并temp对象的属性,若有同名属性会覆盖原对象的属性 })); console.log(mergedArray);
运行后mergedArray的每个元素都会同时包含原有的created_date、tank_type,以及新增的key1、key2属性。
方法二:直接修改原数组(仅在必须时使用)
如果需要直接修改response_from_api里的原对象,可以用forEach配合Object.assign()实现:
const tempObj = temp[0]; response_from_api.forEach(item => { // 把tempObj的属性直接复制到原对象中 Object.assign(item, tempObj); }); // 此时response_from_api的元素已被修改 console.log(response_from_api);
额外补充
- 若你的运行环境不支持ES6扩展运算符,可改用
Object.assign()替代合并逻辑:const mergedArray = response_from_api.map(item => Object.assign({}, item, tempObj)); - 如果
temp数组内有多个对象需要合并,可先把temp里的所有对象合并为一个,再和数组元素合并:// 合并temp数组内的所有对象为单个对象 const combinedTemp = Object.assign({}, ...temp); const mergedArray = response_from_api.map(item => ({...item, ...combinedTemp}));
内容的提问来源于stack exchange,提问作者sai sa
相关产品推荐
相关产品推荐

