使用JS发出反转对象数组

cap*_*ght 4 javascript reverse object

我正在解析JSON并使用javascript获取对象数组.我一直这样做,然后为每个对象追加一个元素:

for(o in obj){ ... }
Run Code Online (Sandbox Code Playgroud)

但我意识到,在某种情况下,我想通过阵列向后退.所以我在for循环之前尝试了这个:

obj = obj.reverse();
Run Code Online (Sandbox Code Playgroud)

但是,这并没有颠倒数组中对象的顺序.我可以简单地在for循环中放置一个count变量来手动反转,但我很困惑为什么反向似乎不适用于对象数组.

Poi*_*nty 11

在JavaScript中没有"对象数组"这样的东西.有对象,有阵列(当然,也是对象).对象具有属性,并且不以任何定义的方式对属性进行排序.

换句话说,如果你有:

var obj = { a: 1, b: 2, c: 3 };
Run Code Online (Sandbox Code Playgroud)

无法保证for ... in循环将以"a","b","c"的顺序访问属性.

现在,如果您有一系列对象,例如:

var arr = [ { a: 1 }, { b: 2 }, { c: 3 } ];
Run Code Online (Sandbox Code Playgroud)

那是一个普通的数组,你可以逆转它.该.reverse()方法会改变数组,因此您不需要重新分配它.如果你这样做有对象的数组(或任何类型的值的真正的数组),那么你应该使用for ... in来遍历它.使用数字索引.

编辑 - 它在一个有用的注释中指出.reverse()它确实返回对数组的引用,因此重新分配不会伤害任何东西.