ltc*_*wsh 3 javascript arrays sorting
以下函数从两个数组创建一个 Map 对象。我正在尝试使用排序方法按键将地图排序到新的 Map 对象中,如 Mozilla 文档中所示。除了将第一个键放在最后一个索引之外,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)
}
Run Code Online (Sandbox Code Playgroud)
电流输出:
Map { 4 => '103', 6 => '123', 16 => '4444', 18 => '99', 2 => '2000' }
Run Code Online (Sandbox Code Playgroud)
所需的输出:
Map { 2 => '2000', 4 => '103', 6 => '123', 16 => '4444', 18 => '99' }
Run Code Online (Sandbox Code Playgroud)
关于我的类型做错了什么有什么线索吗?
这些条目是键值对,例如[1, 103]。尝试return a - b将两个这样的数组相减,这是没有意义的 - 您需要首先从条目对中提取密钥。
const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) {
return entryA[0] - entryB[0];
}));
Run Code Online (Sandbox Code Playgroud)
const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) {
return entryA[0] - entryB[0];
}));
Run Code Online (Sandbox Code Playgroud)
或解构:
const mapSort = new Map(
[...map.entries()]
.sort(([a], [b]) => a - b)
);
Run Code Online (Sandbox Code Playgroud)
const keyArray = [4, 6, 16, 18, 2]
const valueArray = [103, 123, 4444, 2000]
const buildMap = (keys, values) => {
const map = new Map();
let objectArray = []
for (let i = 0; i < keys.length; i++) {
map.set(keys[i], values[i]);
};
const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) {
return entryA[0] - entryB[0];
}));
return mapSort
};
console.log(buildMap(keyArray, valueArray));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |