合并数组数组中唯一项并求和 - JavaScript
javascriptweb developmentobject oriented programming
我们有一个数组数组,每个子数组恰好包含两个元素,第一个是字符串,在本例中是人名,第二个是整数,我们需要做的是合并所有第一个元素相同的子数组,第二个元素应该是公共子数组的第二个元素之和。
以下是我们的示例数组 −
const example = [[ 'first', 12 ], [ 'second', 19 ], [ 'first', 7 ]];
应转换为以下内容
const example = [[ 'first', 19 ], [ 'second', 19 ] ];
假设我们编写一个函数 CombineArray(),该函数将数组作为输入并返回组合数组作为输出,则该函数的代码将是−
示例
const people = [ ['Ram', 21], ['Mohan', 33], ['Vikram', 25], ['Mike', 29], ['Mohan', 41], ['Vikram', 26] ]; const combineArray = (people) => { const map = {}; for(const index in people){ const name = people[index][0]; const prop = people[index][1]; if(map[name]){ map[name] += prop; }else{ map[name] = prop; } } return Object.keys(map).map(key => [key, map[key]]); } console.log(combineArray(people));
输出
控制台中的输出将是 −
[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]
了解 CombineArray 函数 −
它遍历数组,将名称作为键并将 prop 作为对象中的值进行映射,确保将重复的键加在一起,最后将对象转换为数组的数组并返回。
此函数的时间复杂度为 O(2n),通常四舍五入为 O(n),空间复杂度也是 O(n)。