gpt4 book ai didi

javascript - 按键排序映射返回排序后的 Map 对象,其第一个键位于最后一个索引中

转载 作者:行者123 更新时间:2023-12-05 01:55:40 27 4
gpt4 key购买 nike

以下函数从两个数组创建一个 Map 对象。我正在尝试使用 sort 方法将 map 按键排序为新的 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' }

关于我做错了什么的线索吗?

最佳答案

条目是键值对,例如[1, 103]。执行 return a - b 会尝试将两个这样的数组彼此相减,这没有意义 - 您需要先从条目对中提取。 p>

const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) {
return entryA[0] - entryB[0];
}));

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));

或解构:

const mapSort = new Map(
[...map.entries()]
.sort(([a], [b]) => a - b)
);

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(([a], [b]) => a - b)
);
return mapSort
};

console.log(buildMap(keyArray, valueArray));

关于javascript - 按键排序映射返回排序后的 Map 对象,其第一个键位于最后一个索引中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70149676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com