如何将两个独立数组合并为一个对象数组?
合并对应位置数组为对象数组的最佳方法
要将两个对应位置的数组合并为对象数组,最简洁高效的方式是使用数组的map方法,前提是你能确定两个数组的长度完全一致。
基础实现(数组长度一致时)
const datesArray = [ "2017-01-01", "2017-01-02", "2017-01-03", // ... 剩余日期元素 "2017-01-31", ]; const snowfallArray = [ 0.98, 0, 0, 0, 0, 0, 0.35, 0.42, 0, 0.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; // 核心代码 const combinedArray = datesArray.map((date, index) => ({ date, // 简写等价于 date: date snowFall: snowfallArray[index] })); // 输出结果示例: // [{date: '2017-01-01', snowFall: 0.98}, {date: '2017-01-02', snowFall: 0}, ...]
map方法会遍历datesArray的每一个元素,同时获取当前元素的索引index,用这个索引直接取出snowfallArray中对应位置的值,最终生成由目标对象组成的新数组。
处理数组长度不一致的情况
如果不确定两个数组长度是否相同,可以先取较短数组的长度来遍历,避免出现undefined的情况:
const maxValidLength = Math.min(datesArray.length, snowfallArray.length); const combinedArray = []; for (let i = 0; i < maxValidLength; i++) { combinedArray.push({ date: datesArray[i], snowFall: snowfallArray[i] }); }
或者用map结合空值合并运算符,给缺失的降雪数据设置默认值:
const combinedArray = datesArray.map((date, index) => ({ date, snowFall: snowfallArray[index] ?? 0 // 若对应位置无数据,默认设为0 }));
内容的提问来源于stack exchange,提问作者Nate Walchenbach
相关产品推荐
相关产品推荐

