| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2040 人关注过本帖
标题:二维数组里面,根据某个一样的元素,其它的元素相加
只看楼主 加入收藏
a18388880728
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-6-26
收藏
 问题点数:0 回复次数:3 
二维数组里面,根据某个一样的元素,其它的元素相加
如何把这样的一个数组,根据数组的"a","b"相同,其它的元素相加,返回一个新的数
[
[ "a", 30.0, 27.969999999999999, 0.0 ],
[ "a", 20.0, 20.66, 0.0 ],
[ "b", 160.0, 127.08, 5.0 ],
[ "b", 30.0, 2.0, 1.0 ],
[ "c", 1.0, 0.0, 0.0 ],
[ "a", 10.0, 10.859999999999999, 0.0 ],
[ "b", 8.0, 5.3200000000000003, 1.0 ],
[ "b", 20.0, 9.6500000000000004, 0.0 ],
[ "a", 20.0, 11.300000000000001, 1.0 ],
[ "d", 60.0, 56.609999999999999, 6.0 ],
[ "d", 60.0, 57.340000000000003, 4.0 ],
[ "c", 90.0, 72.420000000000002, 8.0 ],
[ "a", 80.0, 7.9000000000000004, 1.0 ]
]
得到如下一个数组
[
[ "a", 160.0, 78.689999999999998, 2.0 ],
[ "b", 218.0, 144.05000000000001, 7.0 ],
[ "c", 91.0, 72.420000000000002, 8.0 ],
[ "d", 120.0, 113.95, 10.0 ]
]
搜索更多相关主题的帖子: 二维数组 相加 一个数 返回 元素 
2021-06-26 11:43
我爱学习hhhh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-7-9
收藏
得分:0 
先遍历二维数组,以二维数组的第一个元素作为对象的key值,将相同元素的数组进行归类,然后遍历对象,找出该对象数组长度最长的,以它为核心进行for循环遍历,对应的相同下标索引相加大概就是这么个意思
2021-07-09 14:09
hellozqf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-19
收藏
得分:0 
如果有问题,希望能指出 谢谢

程序代码:
function accumulation(arrs = []){
     var result = arrs.reduce((counter=[],arr)=>{
        let index, key = arr[0]
        let elem = counter && counter.find((i,_index)=>{
            return i[0]===key ? index = _index : false            
        })

        if(elem) {
            counter[index] = [key, elem[1]+arr[1], arr[2]+arr[2], elem[3]+arr[3] ]
        } else {
            counter.push(arr)
        }
        return counter
    })
    return result.splice(arr.length)
}
accumulation([
        [ "a", 30.0, 27.969999999999999, 0.0 ],
        [ "a", 20.0, 20.66, 0.0 ],
        [ "b", 160.0, 127.08, 5.0 ],
        [ "b", 30.0, 2.0, 1.0 ],
        [ "c", 1.0, 0.0, 0.0 ],
        [ "a", 10.0, 10.859999999999999, 0.0 ],
        [ "b", 8.0, 5.3200000000000003, 1.0 ],
        [ "b", 20.0, 9.6500000000000004, 0.0 ],
        [ "a", 20.0, 11.300000000000001, 1.0 ],
        [ "d", 60.0, 56.609999999999999, 6.0 ],
        [ "d", 60.0, 57.340000000000003, 4.0 ],
        [ "c", 90.0, 72.420000000000002, 8.0 ],
        [ "a", 80.0, 7.9000000000000004, 1.0 ]
    ]) 
/*
        result => [
            ["a", 130, 15.8, 2],
            ["b", 218, 19.3, 7],
            ["c", 91, 144.84, 8],
            ["d", 120, 114.68, 10]
        ]
*/
2021-11-19 23:09
hellozqf
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-19
收藏
得分:0 
return result.splice(arr.length)

这里改为
return result.splice(4)
2021-11-19 23:12
快速回复:二维数组里面,根据某个一样的元素,其它的元素相加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059884 second(s), 8 queries.
Copyright©2004-2021, BCCN.NET, All Rights Reserved