我有一个函数,它循环遍历数组并将键和值对设置为我的 Map 对象。然后我调用另一个函数,将对象中的数字乘以二。当我返回 Map 对象时,我注意到对象中的数字现在按数字顺序排列。根据API它应该保留数组的原始顺序,但事实并非如此。我做错了什么?
var manArray = [5, 2, 7, 4];
function manipulation(arr) {
var myMap = new Map();
for(let i = 0; i < arr.length; i++) {
var key = arr[i].toString();
var value = double(arr[i]);
myMap[key] = value;
}
return myMap;
}
function double(num) {
return num * 2;
}
console.log(manipulation(manArray));
最佳答案
myMap[key] = value;
不是在 Map 中设置值的方式。这只是分配常规对象属性,就好像您根本没有使用过 Map 一样。使用这个:
myMap.set( key, value );
然后,如果您迭代 map ,则可以保证插入顺序。
var manArray = [5, 2, 7, 4];
function manipulation(arr) {
var myMap = new Map();
for(let i = 0; i < arr.length; i++) {
var key = arr[i].toString();
var value = double(arr[i]);
myMap.set( key, value );
}
return myMap;
}
function double(num) {
return num * 2;
}
for ( const [key, value] of manipulation( manArray ) ) {
console.log(key + ': ' + value);
}
关于javascript - map 未按正确顺序返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677292/