地图未按正确顺序返回对象?

时间:2018-08-03 17:12:21

标签: javascript loops javascript-objects

我有一个循环遍历数组并将键和值对设置为Map对象的函数。然后,我调用另一个函数,该函数将对象中的数字乘以2。当我返回Map对象时,我注意到该对象中的数字现在按数字顺序排列。根据{{​​3}},它应该保留数组的原始顺序,但不是。我在做什么错了?

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

2 个答案:

答案 0 :(得分:1)

import numpy as np import matplotlib.pylab as plt x = np.arange(0,4) y = [0.070, 0.026, 0.018, 0.012] yerr= [0.003, 0.001, 0.001, 0.02] 不是您在Map中设置值的方式。这只是分配常规对象属性,就好像您根本没有使用过Map一样。使用这个:

myMap[key] = value;

然后,如果您遍历地图,则可以保证插入顺序。

myMap.set( key, value );

答案 1 :(得分:0)

在JS中不能保证对象键/属性的顺序。对象本质上是无序的集合或属性(JS的不同实现可能具有不同的对象属性顺序)。如果您确实想保留对象顺序,则可以查看一个保证顺序的地图。