Javascript 如何按定义的顺序迭代以数字命名的对象属性?
从理论上讲,对象属性的迭代顺序是无法保证的。 在实践中,有一个事实上的标准。Javascript 如何按定义的顺序迭代以数字命名的对象属性?,javascript,Javascript,从理论上讲,对象属性的迭代顺序是无法保证的。 在实践中,有一个事实上的标准。 IE以任何保证的方式执行此操作的唯一方法是将所有键放入一个数组中,对数组进行排序,然后使用该数组进行迭代 下面是一些伪代码: var obj = {}; // object with lots of properties var keys = []; for (var i in obj) { if (obj.hasOwnProperty(i)) { keys.push(i); } }
IE以任何保证的方式执行此操作的唯一方法是将所有键放入一个数组中,对数组进行排序,然后使用该数组进行迭代 下面是一些伪代码:
var obj = {}; // object with lots of properties
var keys = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
keys.push(i);
}
}
// may have to craft a custom sort function to get the right order
keys.sort();
for (i = 0; i < keys.length; i++) {
// operate on obj[keys[i]]
}
他想按水果名称排序(内部数组中的第三项)
可以这样做:
var data = [[52668,'52668','Orange, Julian','YES'], [61230,'61230','Apple','YES'], [42689,'42689','Banana','YES']];
data.sort(function(a, b) {
return(a[2].localeCompare(b[2]));
});
但是数组的键在object中,如何从数组中获取对象键呢。我尝试了(输入ary){document.write(输入ary[key]+“
”;}结果就像[object object][object object][object object]有什么好方法可以获得密钥吗?我在下面的回答中提供了示例代码。我只是使用了console.log()要追溯结果并找到我需要的,实际上是按照对象填充数组中对象的第二个属性对数组进行排序。例如,在页面源代码中,数组中的元素如[61230、'61230'、'Apple'、'YES']、[42689、'42689'、'Banana'、'YES']、[52668、'52668'、'Orange、Julian'、'YES']我想按字母顺序按名称“Apple”、“Banana”、“Orange”排序。在FF和IEF中,你的最新评论与你原来的问题无关。这里显示的是一组数组。你是说要按内部数组中的第三个元素对外部数组进行排序吗?根据你最近的评论,我在回答中添加了一个新的排序选项。
var data = [[52668,'52668','Orange, Julian','YES'], [61230,'61230','Apple','YES'], [42689,'42689','Banana','YES']];
data.sort(function(a, b) {
return(a[2].localeCompare(b[2]));
});