var arr= [{id:1,name:1,job:[{a:1,a:2}]},{id:2,name:2,job:[a:3,a:4]}……];
最终想实现:
arr=[{id:1,name:1,a:1},{id:1,name:1,a:2},{id:2,name:2,a:3},{id:2,name:2,a:4}……];
说白了,就是想把job这个数组里面的元素拉出来,然后重新生成一个数组。
我用过foreach 和map,但是总发现差一点。
var arr= [{id:1,name:1,job:[{a:1,a:2}]},{id:2,name:2,job:[a:3,a:4]}……];
最终想实现:
arr=[{id:1,name:1,a:1},{id:1,name:1,a:2},{id:2,name:2,a:3},{id:2,name:2,a:4}……];
说白了,就是想把job这个数组里面的元素拉出来,然后重新生成一个数组。
我用过foreach 和map,但是总发现差一点。
1、这样?
var arr= [{id:1,name:1,job:[{a:1,b:2}]},{id:2,name:2,job:[{a:3,b:4}]}];
arr.reduce((a,b)=>{
var job = b.job[0]
delete b.job
a.push({...b, ...job})
return a;
},[])
//[{id:1, name:1,{a:1,b:2},{id:2, name:2, a:3, b:4}];
2、这样?
var arr= [{id:1,name:1,job:[{a:1,b:2}]},{id:2,name:2,job:[{a:3,b:4}]}];
arr.reduce((a,b)=>{
var job = b.job[0]
delete b.job
Object.keys(job).forEach(key=>{
var newObj = {...b};
newObj[key] = job[key]
a.push(newObj)
})
return a;
},[])
// [{id:1, name:1, a:1}, {{id:1, name:1, b:2},{id:2, name:2, a:3},{id:2, name:2, b:4}];
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
大概是这样的逻辑
ES6
ES5