如何把a数组形式的数据转换为newA形式的数据?
let a = [{
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-21 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 56',
}
}, {
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 57',
}
}, {
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-23 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 3`,
upgradeNum: 'Upgraded: 58',
}
}, {
name: 'bb',
platform: 'iOS2',
version: '10.3.4.5654',
upgradeNum: 600,
creator: 'Tom',
data: {
createdAt: '2014-12-11 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 1',
}
}, {
name: 'bb',
platform: 'iOS2',
version: '10.3.4.5654',
upgradeNum: 600,
creator: 'Tom',
data: {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 2',
}
}, ]
let newA = [{
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
children: [{
createdAt: '2014-12-21 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 56',
}, {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 57',
}, {
createdAt: '2014-12-23 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 3`,
upgradeNum: 'Upgraded: 58',
}]
}, {
name: 'bb',
platform: 'iOS2',
version: '10.3.4.5654',
upgradeNum: 600,
creator: 'Tom',
children: [{
createdAt: '2014-12-11 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 1',
}, {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 2',
}]
}]
题主要的代码如下
<script>
let a = [{
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-21 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 56',
}
}, {
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 57',
}
}, {
name: 'aa',
platform: 'iOS1',
version: '10.3.4.5654',
upgradeNum: 500,
creator: 'Jack',
data: {
createdAt: '2014-12-23 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 3`,
upgradeNum: 'Upgraded: 58',
}
}, {
name: 'bb',
platform: 'iOS2',
version: '10.3.4.5654',
upgradeNum: 600,
creator: 'Tom',
data: {
createdAt: '2014-12-11 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 1`,
upgradeNum: 'Upgraded: 1',
}
}, {
name: 'bb',
platform: 'iOS2',
version: '10.3.4.5654',
upgradeNum: 600,
creator: 'Tom',
data: {
createdAt: '2014-12-22 23:12:00',
date: '2014-12-24 23:12:00',
name: `This is production name 2`,
upgradeNum: 'Upgraded: 2',
}
},]
kv = {};
let newA=[]
a.forEach(i => {
let index = kv[i.name] === undefined ? newA.length : kv[i.name];
kv[i.name] = index;
let item = newA[index] || i;
if (item.children) {
item.children.push(i.data)
} else {
item.children = [i.data];
delete i.data;
newA.push(item)
}
});
console.log(newA)
</script>
var newA = []
a.forEach(i => {
let suitItem = newA.find(j => j.name === i.name)
if (suitItem) {
suitItem.children.push(i.data)
} else {
let item = {
...i,
children: [i.data]
}
delete item.data
newA.push(item)
}
})
console.log('newA', newA)
代码如下:
let newA=[];
let arr=[];
a.forEach(i => {
if(arr[i.name] === undefined){//不存在的时候
arr[i.name]=newA.length;//保存i.name在newA中所在的下标,也就是第几个新添加到newA的不同i.name
i.children = [i.data];
delete i.data;
newA.push(i)
}
else{
let obj= newA[arr[i.name]];//获取已存在的
obj.children.push(i.data)//添加children属性
}
});
console.log(newA)
结果: