data数组对象如何转为stu数组对象
let data = [
{ name: "行情数据1", type: 1, num: 6, price: "¥30", },
{ name: "行情数据2", type: 1, num: 6, price: "¥30", },
{ name: "行情数据4", type: 4, num: 6, price: "¥10", },
{ name: "行情数据4", type: 3, num: 2, price: "¥40", },
{ name: "行情数据5", type: 5, num: 6, price: "¥5", },
{ name: "行情数据6", type: 6, num: 6, price: "¥30", },
{ name: "行情数据7", type: 7, num: 6, price: "¥30", },
{ name: "行情数据8", type: 8, num: 6, price: "¥30", },
{name: "行情数据", type: 2, num: 6, price: "¥30",},
{name: "行情数据", type: 3, num: 6, price: "¥30",},
]
let stu = reactive([
{ type: 1, num: 12, price: "¥60", isChange: false, show: true, children: [{ name: "行情数据1", type: 1, num: 6, price: "¥30", }, { name: "行情数据2", type: 1, num: 6, price: "¥30", }] },
{ type: 2, num: 6, price: "¥30", isChange: false, show: true, children: [] },
{ type: 3, num: 6, price: "¥30", isChange: false, show: true, children: [] },
{ type: 4, num: 8, price: "¥50", isChange: false, show: true, children: [{ name: "行情数据4", type: 4, num: 6, price: "¥10", }, { name: "行情数据4", type: 3, num: 2, price: "¥40", }] },
{ type: 5, num: 6, price: "¥5", isChange: false, show: true, children: [] },
{ type: 6, num: 6, price: "¥30", isChange: false, show: true, children: [] },
{ type: 7, num: 6, price: "¥30", isChange: false, show: true, children: [] },
{ type: 8, num: 6, price: "¥30", isChange: false, show: true, children: [] },
]);
按type归类?price累加?但是看结果stu又有些出入。。-_-||。。下面是按type归类,price累加
let data = [
{ name: "行情数据1", type: 1, num: 6, price: "¥30", },
{ name: "行情数据2", type: 1, num: 6, price: "¥30", },
{ name: "行情数据4", type: 4, num: 6, price: "¥10", },
{ name: "行情数据4", type: 3, num: 2, price: "¥40", },
{ name: "行情数据5", type: 5, num: 6, price: "¥5", },
{ name: "行情数据6", type: 6, num: 6, price: "¥30", },
{ name: "行情数据7", type: 7, num: 6, price: "¥30", },
{ name: "行情数据8", type: 8, num: 6, price: "¥30", },
{ name: "行情数据", type: 2, num: 6, price: "¥30", },
{ name: "行情数据", type: 3, num: 6, price: "¥30", },
]
let studata = [], kvIndex = {}, stuitem;
for (let item of data) {
if (kvIndex[item.type] === undefined) {
kvIndex[item.type] = studata.length;
stuitem = { name: "行情数据", type: item.type, num: item.num, price: item.price, isChange: false, show: true, children: [item] }
studata.push(stuitem);
}
else {
stuitem = studata[kvIndex[item.type]];
stuitem.children.push(item);
stuitem.num += item.num;
stuitem.price = '¥' + (parseFloat(stuitem.price.substring(1)) + parseFloat(item.price.substring(1)));
}
}
studata.sort((a, b) => a.type - b.type);//按照type升序排列
console.log(studata)
let stu = reactive(studata);
children属性和当前对象关联信息是什么?
我是以type去划分children的,从你的数据上看不出啥规则,弃之可惜,就放这了
var data = [
{ name: "行情数据1", type: 1, num: 6, price: "¥30", },
{ name: "行情数据2", type: 1, num: 6, price: "¥30", },
{ name: "行情数据4", type: 4, num: 6, price: "¥10", },
{ name: "行情数据4", type: 3, num: 2, price: "¥40", },
{ name: "行情数据5", type: 5, num: 6, price: "¥5", },
{ name: "行情数据6", type: 6, num: 6, price: "¥30", },
{ name: "行情数据7", type: 7, num: 6, price: "¥30", },
{ name: "行情数据8", type: 8, num: 6, price: "¥30", },
{name: "行情数据", type: 2, num: 6, price: "¥30",},
{name: "行情数据", type: 3, num: 6, price: "¥30",},
]
var stu = []
var getNum = function (num) { return parseInt(num.replace('¥', '')) }
data.forEach((i, index) => {
if (stu[i.type]) {
stu[i.type].children.push(i)
stu[i.type].num += i.num
stu[i.type].price = '¥' + (getNum(stu[i.type].price) + getNum(i.price))
} else {
stu[i.type] = {
...i,
isChange: false,
show: true,
name: '行情数据',
children: [i]
}
}
})
stu = stu.filter(i => i)
console.log('stu', stu)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!