📅  最后修改于: 2023-12-03 14:53:42.639000             🧑  作者: Mango
在进行数组操作时,经常需要将两个或多个 Map 合并成一个排序 Map。本文将介绍如何实现这一功能。
首先,我们定义两个 Map 数组:
const arr1 = [
{ name: 'Adam', age: 25 },
{ name: 'Betty', age: 30 },
{ name: 'Charlie', age: 20 }
];
const arr2 = [
{ name: 'David', age: 35 },
{ name: 'Eva', age: 27 },
{ name: 'Frank', age: 18 }
];
接下来,我们可以使用 concat()
方法将两个数组合并成一个数组:
const arr3 = arr1.concat(arr2);
arr3
中的元素顺序与 arr1
和 arr2
的顺序保持一致。
现在,我们需要将 arr3
中的元素按照指定的属性进行排序。我们可以使用 sort()
方法进行排序:
arr3.sort((a, b) => {
if (a.age < b.age) {
return -1;
} else if (a.age > b.age) {
return 1;
} else {
return 0;
}
});
这里我们将元素按照 age
属性进行排序。如果 a.age
小于 b.age
,我们返回 -1,如果 a.age
大于 b.age
,我们返回 1,否则返回 0。这样,就可以按照 age
属性对元素进行排序了。
最后,我们可以将排序后的数组转换为 Map 对象:
const result = new Map(arr3.map(item => [item.name, item]));
这里我们使用 map()
方法将数组元素转换为键值对,再使用 new Map()
构造函数将其转换为 Map 对象。
完整代码如下:
const arr1 = [
{ name: 'Adam', age: 25 },
{ name: 'Betty', age: 30 },
{ name: 'Charlie', age: 20 }
];
const arr2 = [
{ name: 'David', age: 35 },
{ name: 'Eva', age: 27 },
{ name: 'Frank', age: 18 }
];
const arr3 = arr1.concat(arr2);
arr3.sort((a, b) => {
if (a.age < b.age) {
return -1;
} else if (a.age > b.age) {
return 1;
} else {
return 0;
}
});
const result = new Map(arr3.map(item => [item.name, item]));
这样,我们就可以将两个 Map 数组合并为一个排序 Map 了。