原数组 :var originArray = [{key: 'wifi', value:[false,true,false]},{key:'os',value:[true,false,true]}];
转化成
目标数组 :var resultArray = [{wifi:false,os:true},{wifi:true,os:false},{wifi:false,os:true}];
有没有简洁的实现方法
原数组 :var originArray = [{key: 'wifi', value:[false,true,false]},{key:'os',value:[true,false,true]}];
转化成
目标数组 :var resultArray = [{wifi:false,os:true},{wifi:true,os:false},{wifi:false,os:true}];
有没有简洁的实现方法
let resultArray = originArray.reduce((arr, item) => {
item.value.forEach((citem, index) => {
(arr[index] = arr[index] || {})[item.key] = citem
})
return arr
}, [])
function compose(source) {
const length = source[0].value.length;
return Array.from(Array(length))
.map((_, i) => source
.reduce(
(o, { key, value }) => ({ ...o, [key]: value[i] }),
{}
)
);
}
const originArray = [
{ key: "wifi", value: [false, true, false] },
{ key: "os", value: [true, false, true] }
];
const resultArray = compose(originArray);
console.log(JSON.stringify(resultArray, null, 2));
13 回答13.1k 阅读
8 回答3k 阅读
3 回答1.4k 阅读✓ 已解决
2 回答5.3k 阅读✓ 已解决
5 回答1.5k 阅读
7 回答2.2k 阅读
9 回答1.8k 阅读✓ 已解决