Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中对对象元素进行排序?_Javascript - Fatal编程技术网

如何在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