如何在javascript中对对象元素进行排序?
可能重复:如何在javascript中对对象元素进行排序?,javascript,Javascript,可能重复: 我有一个数组: var arr = {} arr[2323] = 1 arr[123] = 1 ... arr[n+232323] = 1 如何让AOObject的所有元素按键排序(数字顺序?) 返回字符串类型。这不是关联数组,这是一个对象。javascript中没有关联数组 此外,对象不是有序的。对象中键的顺序没有意义。这不是一个关联数组,这是一个对象。javascript中没有关联数组 此外,对象不是有序的。对象中键的顺序是没有意义的。假设有某种原因,您首先不使用数组,您可
我有一个数组:
var arr = {}
arr[2323] = 1
arr[123] = 1
...
arr[n+232323] = 1
如何让AOObject的所有元素按键排序(数字顺序?)
返回字符串类型。这不是关联数组,这是一个对象。javascript中没有关联数组
此外,对象不是有序的。对象中键的顺序没有意义。这不是一个关联数组,这是一个对象。javascript中没有关联数组
此外,对象不是有序的。对象中键的顺序是没有意义的。假设有某种原因,您首先不使用数组,您可以获取可枚举对象属性的数组,并对该数组进行排序
var sorted = Object.keys(my_obj)
.sort(function(a,b) {
return a - b;
});
这假设键是数字键
然后可以迭代数组,并使用每个键从my_obj
获取值
sorted.forEach(function(key) {
console.log(my_obj[key]);
});
假设由于某种原因您首先不使用数组,您可以获取可枚举对象属性的数组,并对该数组进行排序
var sorted = Object.keys(my_obj)
.sort(function(a,b) {
return a - b;
});
这假设键是数字键
然后可以迭代数组,并使用每个键从my_obj
获取值
sorted.forEach(function(key) {
console.log(my_obj[key]);
});
简短回答:你不能
详细回答:JavaScript中的关联数组实际上是JavaScript对象。添加新元素时,实际上是在向对象添加新成员。虽然大多数浏览器都会按照添加的顺序枚举这些成员,但该标准规定该顺序未定义。您不能对未定义的内容进行排序。简短回答:您不能 详细回答:JavaScript中的关联数组实际上是JavaScript对象。添加新元素时,实际上是在向对象添加新成员。虽然大多数浏览器都会按照添加的顺序枚举这些成员,但该标准规定该顺序未定义。无法对未定义的对象进行排序。JavaScript对象(映射/字典/关联数组)没有顺序,无法对其进行排序。您需要首先将其转换为数组。由于循环中只需要对象的键,因此(对于较旧的浏览器可能需要一个垫片)将用于以下任务:
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]]
}
var obj={…};
var keys=Object.keys(obj).sort(函数(a,b){返回a-b;});//数字排序
对于(var i=0;iJavaScript对象(映射/字典/关联数组)没有顺序,您无法对它们进行排序。您需要先将其转换为数组。由于您只需要循环中对象的键,(对于较旧的浏览器,可能需要一个垫片)用于以下任务:
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]]
}
var obj={…};
var keys=Object.keys(obj).sort(函数(a,b){返回a-b;});//数字排序
对于(var i=0;iyou指的是object,因为JavaScription中没有所谓的关联数组。我有点不安,因为人们回答说您不能对这些键进行排序,很明显,如果所有键都是数字的,那么它们都可以排序。也许他希望遍历这些键(按数字顺序)因此,他可以将它们加载到一个新对象中,其中键之间的距离不太远。对象无法直接排序,但“不是我是”的答案将提供对象内键名的有序列表,因此可以在分离中调用它们。您是指对象,因为Javascript中没有所谓的关联数组。我有点担心,人们回答说您不能对这些键进行排序,很明显,如果所有键都是数字,那么它们可以排序。也许他希望迭代键(以数字顺序),以便他可以将它们加载到一个新对象中,其中键之间的距离不太远。对象无法直接排序,但“不是我是”的答案将提供对象内键名的有序列表,因此可以在分离中调用它们。键在这种语言中定义为字符串。因此您应该parseInt
或使用+keyname
或调用.localeCompare
对a
或b
字符串执行操作@jAndy:“数字”不同于“数字”。你可以有数字字符串。我只是说,我的排序是假设需要数字排序。请注意,这将返回一个有序数组,列出你要访问的对象的键名。当然可以,但我认为这是一个坏的因果报应。你不应该让它成为正确转换内容的黑魔法。@amnotiam:是的我同意Object.keys
和.sort()
,我也会这么做。只是(希望可以铸造)-(希望可以铸造)
让我有点恼火,因为这个问题的简单解决方案是:p键
在这种语言中是按定义的字符串
。所以你要么应该parseInt
,要么使用+keyname
或者调用。localeCompare
在a
或b
字符串上。@jAndy:“numeric”不同于“number”。你可以有数字字符串。我只是说,我的排序是假设需要数字排序。请注意,这将返回一个有序数组,列出你要访问的对象的键名。当然可以,但我认为这是一个坏的因果报应。你不应该让它成为正确转换内容的黑魔法。@amnotiam:是的我同意Object.keys
和sort()
,我也会这么做。只是(希望是可铸造的)-(希望是可铸造的)
让我有点恼火,因为问题的简单解决方案是:p