用于循环的JavaScript,但反过来?

Jac*_*ack 4 javascript for-loop

获取具有4个属性的JavaScript对象:

function Object() {
  this.prop1;
  this.prop2;
  this.prop3;
  this.prop4;
}

var obj = new Object();
Run Code Online (Sandbox Code Playgroud)

我使用for(in)循环来检查每个属性,因为我不知道属性的数量或名称:

for(property in obj) {
  var prop = obj[property];
}
Run Code Online (Sandbox Code Playgroud)

但是我想处理从最后一个开始的属性(本例中为prop4).我想我想要一个反向循环.

我怎样才能做到这一点?

谢谢,杰克

添加:我引用的对象是从JSON.parse返回的对象.这些属性似乎始终如一.没有keys()方法.

jfr*_*d00 13

A for (x in y)不会按任何特定顺序处理属性,因此您无法依赖任何所需的订单.

如果需要按特定顺序处理属性,则需要将所有属性都放入数组中,对数组进行适当排序,然后按所需顺序使用这些键.

使用ES5(或ES5填充程序),您可以将所有属性添加到数组中:

var keys = Object.keys(obj);
Run Code Online (Sandbox Code Playgroud)

然后,您可以按标准词法顺序对它们进行排序,或使用您自己的自定义函数进行排序:

keys.sort(fn);
Run Code Online (Sandbox Code Playgroud)

然后,您可以按照所需的顺序访问它们:

for (var i = 0; i < keys.length; i++) {
    // process obj[keys[i]]
}
Run Code Online (Sandbox Code Playgroud)