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 循环,但我以升序获得响应。但我需要它按降序排列。有人能帮我吗。
谢谢
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 循环,但我以升序获得响应。但我需要它按降序排列。有人能帮我吗。
谢谢
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)});
但标准可能更便携。
像这样:
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()
将迭代已排序的键集。
因此,对于每个键,您可以从对象中获取值并使用它。