JavaScript数组转换

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)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632