javascript - map 未按正确顺序返回对象?

标签 javascript loops javascript-objects

我有一个函数,它循环遍历数组并将键和值对设置为我的 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/

相关文章:

javascript - VueJS 基于输入过滤数组

javascript - 无法在同一调用堆栈中的转换之前动态设置初始元素转换

java - 我的isbn检查器有什么错误?

java - 迭代继承的类对象的列表

javascript - 如何从包含嵌套对象的数组中删除重复项

javascript - 未捕获的 TypeError : firebase. auth 不是函数

javascript - jQuery 语法不设置对象属性

loops - 在 Fortran 循环中使用指针变量

javascript - 使用 Javascript 将对象(元素)向上移动一级

javascript - 检查 JavaScript 变量是错误的还是空数组或对象的最有效方法是什么?