合并数组中唯一项并求和 - JavaScript
我们有一个二维数组,每个子数组都包含两个元素,第一个是字符串,在本例中是人员姓名,第二个是整数。我们需要做的是合并所有第一个元素相同的子数组,并且第二个元素应该是相同子数组的第二个元素之和。
以下是我们的示例数组:
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 函数:
它遍历数组,将名称作为键,属性作为值映射到一个对象中,确保重复键被加在一起,最后将对象转换为二维数组并返回。
此函数的时间复杂度为 **O(2n)**,通常四舍五入为 **O(n)**,空间复杂度也为 **O(n)**。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP