const names = ['Mary', 'John', 'Emma'];
const heights = [180, 165, 170];
function sortPeople(names, heights) {
// 注意heights数组没有重复项(names数组可能有重复项)
// 两个对应数组,同等长度,取谁的长度都行
const n = names.length;
// 首先将名字身高组合成一个map集合
const map = new Map();
for (let i = 0; i < n; i++) {
map.set(heights[i], names[i]); // 取谁,value就是谁
}
// Map(3) { 180 => 'Mary', 165 => 'John', 170 => 'Emma' }
console.log(map);
// 然后将map集合转换成二维数组,并调用原生js的api排序
const sort2WeiArr = [...map].sort(function (a, b) {
return b[0] - a[0];
});
// [ [ 180, 'Mary' ], [ 170, 'Emma' ], [ 165, 'John' ] ]
console.log(sort2WeiArr);
// 排好序的二维数组再遍历,取出名字项即可
const result = sort2WeiArr.map((item) => {
return item[1];
});
// [ 'Mary', 'Emma', 'John' ]
console.log(result);
return result;
}
const res = sortPeople(names, heights);
console.log('排序结果', res); // [ 'Mary', 'Emma', 'John' ]
按身高排序 使用Map集合转二维数组
于 2023-05-19 14:22:02 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)