【发布时间】:2022-01-06 00:09:15
【问题描述】:
以下函数从两个数组创建一个 Map 对象。我正在尝试使用 sort 方法将地图按键排序到新的 Map 对象中,如 Mozilla Docs 所示。除了将第一个键放在最后一个索引之外,mapSort 对象正确地对所有键进行排序。
const sortMapByKey = () => {
const keyArray = [4, 6, 16, 18, 2]
const valueArray = [103, 123, 4444, 99, 2000]
const buildMap = (keys, values) => {
const map = new Map();
for(let i = 0; i < keys.length; i++){
map.set(keys[i], values[i]);
};
const mapSort = new Map([...map.entries()].sort(function(a, b) {
return a - b;
}));
return mapSort
};
return buildMap(keyArray, valueArray)
}
当前输出:
Map { 4 => '103', 6 => '123', 16 => '4444', 18 => '99', 2 => '2000' }
想要的输出:
Map { 2 => '2000', 4 => '103', 6 => '123', 16 => '4444', 18 => '99' }
任何关于我在排序方面做错了什么的线索?
【问题讨论】:
-
99来自哪里? -
这些值来自一个不太相关的更长的函数,所以我将它们提取到变量中以便于测试。
-
我的错,99 应该是 keyArray 中的第 4 项。谢谢
标签: javascript arrays sorting