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,'事例二');
效果如下: