var arr = [{name:'1',age:10},{name:'2',age:20},{name:'3',age:30}]
var arr1 = {name:['1','2','3'],age:[10,20,30]}
如何把arr 转换成 arr1这样的。提供一下思路也行
###[{name:'1',age:10},{name:'2',age:20},{name:'3',age:30}].reduce((res, item) => {
res.name.push(item.name);
res.age.push(item.age);
return res;
}, {name: [], age: []});
###arrname = arr.map(item => item.name)
arrage = arr.map(item => item.age)
arr1 = { name:arrname, age:arrage }
###
convertArray([{name:'1',age:10},{name:'2',age:20},{name:'3',age:30}])
function convertArray (list) {
let query = {}
list.forEach(item => {
for(let key in item) {
query[key] = query[key] || []
query[key].push(item[key])
}
})
return query
}
###arr.reduce((res, cur) => {
Object.keys(cur).forEach(key => {
res[key] = res[key] || [];
res[key].push(cur[key]);
})
return res;
}, {})
###- 循环遍历
arr
- 根据
Object.keys
拿到每个key - 判断
arr1
中对应key是否有值 - 有就肯定是数组, push
- 没有就 设置成数组
[data]
先Object.keys取数组中所有key。然后遍历。
let keys=Object.keys(arr[0])
const data= keys.map(item=>{
let b=arr.map(item1=>item1[item])
return {[item]:b}
})
###var arr = [{name:'1',age:10},{name:'2',age:20},{name:'3',age:30}];
var arr1 = arr.reduce((result,current)=>{
Object.getOwnPropertyNames(current).forEach((propertyName)=>{
result[propertyName]=result[propertyName]||[];
result[propertyName].push(current[propertyName]);
});
return result;
},{});
console.log(arr1);