Javascript 对象顺序不正确

Javascript Object order incorrect

我有一个检索对象的函数。

此对象有一个 属性 和一个值。 属性 是数字,从“-30”开始一直到“50”

问题是,当我遍历此对象时,浏览器似乎将其排序为从“0”开始,而不是从“-30”的初始 属性 开始

我需要确保顺序与对象完全相同。

var colorOj = {
   "-30":"#111","-29":"#131313", ..etc.., "0":"#333", ..etc.., 
   "50":"#555"
}

function makeList(object){
   for (var i in object) {
      console.log(i); // Returns 0,1,2,3,4,5
      // I need a return of -30,-29,-28,..., 0, 1, 2 ...
   }
}
makeList(colorObj);

正如@Teemu 所建议的,属性没有以任何特定顺序存储。但是您可以使用特定的排序功能以任何顺序打印它们。

代码

var obj = {};

for (var i = 5; i > -5; i--) {
  obj[i * 10] = i * 10;
}

// Sort and get all keys...
var keys = Object.keys(obj).sort(function(a, b) {
  return parseInt(a) - parseInt(b);
});

console.log(keys)

// Loop over keys to print values of each property
keys.forEach(function(item) {
  console.log(item, obj[item]);
})

你可以这样做:

var colorOj = {
   "-30":"#111","-29":"#131313", "0":"#333", 
   "50":"#555"
};

var keys = Object.keys(colorOj).sort(function(a,b){return a - b})

for(var i = 0; i < keys.length;i++){console.log(keys[i])}

这样你就可以获得对象中的每一个键。然后按照你喜欢的方式排序(javascript中的排序函数可以将比较函数作为参数 look -> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort