Javascript对象顺序不正确

时间:2016-01-12 12:14:10

标签: javascript arrays object javascript-objects

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

此对象具有属性和值。该属性为数字,从“-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);

2 个答案:

答案 0 :(得分:2)

根据@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]);
})




答案 1 :(得分:0)

你可以这样做:

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中的排序函数可以将比较函数作为参数外观 - &gt; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort