当前位置: 首页 > 知识库问答 >
问题:

javascript - 用js 写一方法,将a的数据处理为a1?

缪远
2023-07-19

id相同,ass里的数据根据 id相同,unicode 相同 ,把pearPlanFlag有属性的值加到第一个id出现的情况

const a = [    {      id: 3889,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 , pearPlanFlag: true},        { unicode: 222, uniname: "山西", budgetMoney: 600 , pearPlanFlag: false},        { unicode: 333, uniname: "江西", budgetMoney: 200 , },      ],    },    {      id: 3889,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 , pearPlanFlag: true},      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 , pearPlanFlag: true},        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 },      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 , pearPlanFlag: false},        { unicode: 333, uniname: "江西", budgetMoney: 200 },      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 , pearPlanFlag: true},      ],    }];
const a1 = [    {      id: 3889,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 , pearPlanFlag: true},        { unicode: 222, uniname: "山西", budgetMoney: 600 , pearPlanFlag: false},        { unicode: 333, uniname: "江西", budgetMoney: 200 , pearPlanFlag: true },      ],    },    {      id: 3889,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 },      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 , pearPlanFlag: true},        { unicode: 222, uniname: "山西", budgetMoney: 600 , pearPlanFlag: false},        { unicode: 333, uniname: "江西", budgetMoney: 200 , pearPlanFlag: true},      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 },      ],    },    {      id: 4000,      ass: [        { unicode: 111, uniname: "上海", budgetMoney: 200 },        { unicode: 222, uniname: "山西", budgetMoney: 600 },        { unicode: 333, uniname: "江西", budgetMoney: 200 },      ],    }];

共有3个答案

蒋弘致
2023-07-19
Object.values(a.reduce((obj, {id, ass}) => {    let arr = obj[id] ??= {'': []};    arr[''].push({id, ass: ass.map(({pearPlanFlag: v, ...rest}) => {        (arr[rest.unicode] ??= rest).pearPlanFlag ??= v;        return rest;    })});    return obj;}, {})).flatMap(i => i['']);
刁瀚昂
2023-07-19
function transform(arr) {    const ret = [], cache = {};    for (let i = 0; i < arr.length; ++i) {        const { id, ass } = arr[i];        const _ass = (cache[id] ??= {});        ret[i] = { ...arr[i], ass: [] };        for (let j = 0; j < ass.length; ++j) {            const item = ret[i].ass[j] = { ...ass[j] };            const { unicode, pearPlanFlag } = item;            const _item = _ass[unicode];            if (!_item) {                _ass[unicode] = item;            } else if (pearPlanFlag != null) {                if (_item.pearPlanFlag == null) {                    _item.pearPlanFlag = pearPlanFlag;                }                delete item.pearPlanFlag;            }        }    }    return ret;}console.log(transform(a));
昌山
2023-07-19
function processArray(a) {    return a.map(item => {        const hasTrueFlag = item.ass.some(assItem => assItem.pearPlanFlag === true);        item.ass = item.ass.map(assItem => {            assItem.pearPlanFlag = hasTrueFlag;            return assItem;        });        return item;    });}const a1 = processArray(a);
 类似资料:
  • js:求一个数据处理方法,例如上述例子, tableList处理之后,可以得到 之前有如下方案 但是不能兼容account.t_sub_account_.*的场景,哪位大佬可以帮忙完善下吗?

  • 学习js事件时,有三种不同的写法, 第一种 第二种 第三种 我想实现一下点击事件的防抖效果,但是直接在button标签中加点击事件没有效果。 第一个问题:第一种写法哪里有问题?应该怎么改正? 第二个问题:这三种写法是不是在运行的时候有区别?区别是什么? 希望有人解答一下

  • 我现在是将方法A定义在被写入的文件里,然后 {a:'${A}'},在写入之前将'${}',给删了;但有没有简洁一点的方法呢? process 如何编写?

  • 我刚刚开始使用node.js中的level模块学习level.db。 但这段代码给出了以下 错误[WriteError]:必须是C:\users\mathe\desktoph\leveldb-and-crypto\node_modules\levelup\lib\levelup.js:274:23 有人能告诉我哪里不对劲吗?

  • 本文向大家介绍JS 对java返回的json格式的数据处理方法,包括了JS 对java返回的json格式的数据处理方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇JS 对java返回的json格式的数据处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 用户勾选某一个分类,一次性查询该分类里的所有商品信息,并创建价格任务。 业务员在价格操作的时候,对刚才创建的所有商品信息进行价格操作,根据基准价做涨幅,每个商品都有不同的基准价,现在的问题就是数据量太大,如果一次性操作一万条商品数据,还要根据基准价做涨幅,有什么好的方法?前端如果展示的话,每条商品的涨幅后价格都要显示,请问该怎么操作比较好,后端这边应该怎么进行处理大批量的数据?