js 对象数组相关处理,根据某一字段求和,根据某一字段排序

输入描述:
n行每行输入成对的index和value值,以空格隔开

输出描述:
输出合并后的键值对(多行)
比如:
输入:
0 1
0 2
1 2
3 4
复制
输出:
0 3
1 2
3 4
代码示例:

    let arr = []
    while(line = await readline()){
            let lineArr = line.split(' ')
            arr.push({index:lineArr[0],value:lineArr[1]})
    }
// 1、把所有的index值提取出来
    var indexs = arr.map(function(item){
        return item.index
    })
// 2、indexs去重
    var newIndexs = Array.from(new Set(indexs))
    let newArr = []
    newIndexs.map(function(item){
// 3、把元素组里面等于提取出来的index相等的对象放到一个数组
        let subArr = arr.filter(function(sitem){
            return sitem.index == item
        })
//4、把提起出来的小数组里面的value值加起来,用的reduce,注意后面有个total的初始值0
        let sum  = subArr.reduce(function(total,titem){
            return total+parseInt(titem.value)
        },0)
        newArr.push(item+' '+sum)
    })
//5、排序,这里是根据数组中部分元素排序
    newArr.sort(function(a,b){
        return a.split(' ')[0]-b.split(' ')[0]
    })
    newArr.map(function(item,index){
        console.log(item)
    })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容