可能重复:
Sorting a JavaScript object
Sort JavaScript object by key
我有阵列:
var arr = {}
arr[2323] = 1
arr[123] = 1
...
arr[n+232323] = 1
如何按键排序aobject的所有元素(数字顺序?)
for ( key in arr ) {
alert(typeof(key))
}
返回字符串类型。
答案 0 :(得分:1)
这不是关联数组,这是一个对象。 javascript中没有关联数组。
此外,未订购对象。对象中键的顺序没有意义。
答案 1 :(得分:1)
假设您首先没有使用数组的原因,您可以获取可枚举对象属性的数组,并对该数组进行排序......
var sorted = Object.keys(my_obj)
.sort(function(a,b) {
return a - b;
});
这假设键是数字。
然后你可以迭代数组,并使用每个键从my_obj
获取值......
sorted.forEach(function(key) {
console.log(my_obj[key]);
});
答案 2 :(得分:1)
简短回答:你不能。
长答案:JavaScript中的关联数组实际上是JavaScript对象。添加新元素时,您实际上是在向对象添加新成员。虽然大多数浏览器会按照添加的顺序枚举这些成员,但标准规定订单未定义。你不能对未定义的东西进行排序。
答案 3 :(得分:1)
JavaScript对象(地图/字典/关联数组)没有顺序,您无法对它们进行排序。您需要先将其转换为数组。由于您只需要循环中对象的键,Object.keys()
function(可能需要旧版浏览器的垫片)才能完成任务:
var obj = {...};
var keys = Object.keys(obj).sort(function(a,b){return a-b;}); // numerically sorted
for (var i=0; i<keys.length; i++) {
alert(keys[i]);
// access the values by obj[keys[i]]
}