JavaScript中如何将两个长度不同的数组合并为对象数组
实现代码
你之前得到单个键值对对象的核心原因是遍历过程中没有把所有键值对组装到同一个对象内,可按以下方案实现:
const arr1 = ["first","second","third","fourth","fifth","Sixth"] const arr2 = [["1","2","3","4","5","6"],["7","8","9","10","11","12"],["1","2","3","4"]] const finalArray = arr2 // 过滤掉长度与arr1不匹配的子数组(示例中长度为4的第三项会被排除) .filter(subArr => subArr.length === arr1.length) .map(subArr => // 把arr1的键和子数组对应下标的值组装为对象 Object.fromEntries( arr1.map((key, idx) => [key, Number(subArr[idx])]) ) )
如需兼容不支持Object.fromEntries的低版本环境,可改用reduce实现:
const finalArray = arr2 .filter(subArr => subArr.length === arr1.length) .map(subArr => arr1.reduce((resultObj, key, idx) => { resultObj[key] = Number(subArr[idx]) return resultObj }, {}) )
以上代码输出结果与你要求的结构完全一致。
内容的提问来源于stack exchange,提问作者sahil555
相关产品推荐
相关产品推荐

