JavaScript如何组合月份数组与值对象生成指定结构的新数组
JavaScript 按日期匹配生成目标数组实现方案
给定数据源
// 全量月份数组 var a = [ "2022-01", "2022-02", "2022-03", "2022-04", "2022-05", "2022-06", "2022-07", "2022-08", "2022-09", "2022-10", "2022-11", "2022-12" ] // 存在有效数值的日期键值对 var b = { "2022-05": 44922, "2022-06": 25 }
实现代码
用数组原生的map方法遍历全量月份数组即可,逻辑和原数组顺序完全对齐,不会打乱排序,对新手非常友好:
var c = a.map(function(date) { return { date: date, // 匹配到对应日期的值就用原值,没匹配到返回空字符串 value: b.hasOwnProperty(date) ? b[date] : '' } })
逻辑说明
map是数组自带的遍历方法,会逐一遍历数组a中的每一个日期项,每处理完一项就返回一个新的对象,最终组合成和原数组长度、顺序完全一致的新数组hasOwnProperty用来判断对象b中是否存在当前日期的键,避免取到对象原型链上的意外值;三元表达式会根据判断结果选择返回匹配到的数值,还是空字符串- 如果你使用的是支持ES2020及以上标准的运行环境,也可以用更简洁的箭头函数+空值合并运算符写法:
const c = a.map(date => ({date, value: b[date] ?? ''}))
运行上述代码后输出的c和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

