如何将日期标签数组和日期值数组合并为目标对象数组?
问题原因
你之前的两种写法都是生成单一对象,而date_label数组的每一项都是固定的Date字符串,同一个对象下重复对相同key赋值,后面的值会覆盖前面的,所以最终只会保留最后一个日期。你的需求是生成包含多个独立对象的数组,每个对象单独持有一个Date属性,因此不能把所有键值对塞到同一个对象里。
正确实现方式
1. 改造原for循环写法
每次循环生成一个新对象,推入结果数组即可:
const result = []; for (var i = 0, l = date_label.length; i < l; i += 1) { const obj = {}; obj[date_label[i]] = data_date[i]; result.push(obj); } console.log(result);
2. 原生JS极简实现
如果date_label全为固定的Date字段,可以直接遍历日期数组生成:
const result = data_date.map(date => ({ Date: date }))
如果需要兼容date_label存在不同标签的场景,可以按下标匹配两个数组:
const result = date_label.map((label, index) => ({ [label]: data_date[index] }))
3. Lodash实现
使用_.zipWith方法实现双数组的对应转换:
const result = _.zipWith(date_label, data_date, (label, date) => ({ [label]: date }))
内容的提问来源于stack exchange,提问作者AshleyCrasto
相关产品推荐
相关产品推荐

