js操作数组根据key值去做操作(应用层面)

前端在处理后台返回的接口同时,可能也会在功能中对数据进行操作。在实际开发中可能出现比较常见的一类就是归类或者归并。

如需要合并所有KEY值相同的的值,或者说累计相同KEY值所以在实际开发层面,在没有找到更好的办法之前我们想到的最多是for循环嵌套

for循环进行归类,但是那样既不高效,可读性又差,所以我用reduce函数进行了缩减操作。如下

   //模拟一二用到的变量
    const  data = [{
        '2019-02-03': 1
    }, {
        '2019-01-01': 34
    }, {
        '2019-02-03': 12
    }, {
        '2019-01-01': 31
    }, {
        '2019-03-01': 5
    }];
    //模拟一 : 总结所有日期出现的次数如果有则叠加次数
    let new_data_one = data.reduce((v,i) =>Object.assign(v,v[Object.keys(i)[0]]?++v[Object.keys(i)[0]]:v[Object.keys(i)[0]]=1),{});
    console.log(new_data_one,'事例一');
    //模拟二 : 总结所有日期出现的值如果有则叠加值
    let new_data_two = data.reduce((v,i) =>Object.assign(v,v[Object.keys(i)[0]]?v[Object.keys(i)[0]]=Object.values(i)[0]+v[Object.keys(i)[0]]:v[Object.keys(i)[0]]=Object.values(i)[0]),{});
    console.log(new_data_two,'事例二');

效果如下:

 

posted @ 2020-07-25 11:28  熊叔叔  阅读(256)  评论(0编辑  收藏  举报