0
for (var key in validation_messages) {
 var obj = validation_messages[key];
 for (var prop in obj) {
  if(obj.hasOwnProperty(prop)){
  alert(prop + " = " + obj[prop]);
  }
 }
}

这是我拥有的 for 循环,但我以升序获得响应。但我需要它按降序排列。有人能帮我吗。

谢谢

4

2 回答 2

2

Javascript 不保证特定的对象属性顺序,请参阅:Does JavaScript Guarantee Object Property Order?

如果你需要一个特定的顺序,你应该使用一个数组。

如果您将它们放在一个数组中,代码将如下所示(小提琴:http: //jsfiddle.net/DH3VQ/1/):

var props = [
    { key:"p1", value:"a"},   
    { key:"p2", value:"b"},   
    { key:"p3", value:"c"},   
];

for (var i = 0; i< props.length; i++){
    alert(props[i].key + " = " + props[i].value);
}   

或者你可以做一些更花哨的事情:

   props.forEach(function(prop){alert(prop.key + " = " + prop.value)});

但标准可能更便携。

于 2013-11-04T23:24:25.963 回答
1

像这样:

Object.keys(validation_messages)
      .sort(function(a,b) {
           return b.localeCompare(a);
      })
      .forEach(function(key) {
           var val = validation_messages[key];

           console.log(key, val);
      });

Object.keys将对象的可枚举属性放入数组中。然后.sort()将按降序对它们进行排序,并且.forEach()将迭代已排序的键集。

因此,对于每个键,您可以从对象中获取值并使用它。

于 2013-11-04T23:34:39.007 回答