How to sort object elements in javascript?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Sorting a JavaScript object
Sort JavaScript object by key
我有数组:
1 2 3 4 5 | var arr = {} arr[2323] = 1 arr[123] = 1 ... arr[n+232323] = 1 |
如何让aObject的所有元素按键排序(数字顺序?)
1 2 3 | for ( key in arr ) { alert(typeof(key)) } |
返回字符串类型。
javascript对象(映射/字典/关联数组)没有顺序,无法对其排序。您需要先将其转换为数组。由于您在循环中只需要对象的键,因此
1 2 3 4 5 6 | 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]] } |
简短的回答:你不能。
答案很长:javascript中的关联数组实际上是javascript对象。添加新元素时,实际上是向对象添加新成员。虽然大多数浏览器将按照添加成员的顺序枚举这些成员,但标准声明顺序未定义。不能对未定义的内容进行排序。
假设您一开始没有使用数组是有原因的,那么您可以获取一个可枚举对象属性数组,并对该数组进行排序…
1 2 3 4 | var sorted = Object.keys(my_obj) .sort(function(a,b) { return a - b; }); |
这假设键是数字的。
然后您可以迭代数组,并使用每个键从
1 2 3 | sorted.forEach(function(key) { console.log(my_obj[key]); }); |
这不是一个假设数组,这是一个对象。javascript中没有关联数组。
此外,对象没有排序。对象中键的顺序没有意义。