【问题标题】:Javascript Object order incorrect [duplicate]Javascript对象顺序不正确[重复]
【发布时间】:2016-01-12 12:14:09
【问题描述】:

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

这个对象有一个属性和一个值。该属性是数字,从“-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);

【问题讨论】:

标签: javascript arrays object javascript-objects


【解决方案1】:

正如@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]);
})

【讨论】:

  • 非常感谢,我将如何根据您的代码获取每个 Key 的值?
  • keys 是按排序顺序排列的所有键的数组。你将不得不循环它以获得它的价值。我已经在上面的代码中做到了。
  • 我的意思是获取“#333”的值...
  • 如果你知道ID,那么不要循环,直接写obj[ID]
【解决方案2】:

也许你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2013-06-30
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多