5

通常,我需要遍历 Ember.ArrayProxy 对象的内容。

示例 1,我需要建立一个 ID 列表:

var loc = myArrayProxy.get('length') || 0,
    ids = new Array(),
    idsList;

while(--loc >= 0) {
    var curObject = myArrayProxy.objectAt(loc);
    ids.push(curObject.id);
}
idsList = ids.join(',');

示例 2,我需要构建一个原始对象数组(不是 Ember.Object):

var loc = myArrayProxy.get('length') || 0,
    newContent = new Array();

while(--loc >= 0) {
    var curObject = myArrayProxy.objectAt(loc);
    newContent.push({
                      id:   curObject.id,
                      name: curObject.name
                   });
}

问题:有没有更好的方法来做到这一点?“while(--loc >= 0)”对我来说似乎很糟糕。

4

1 回答 1

8

Ember.ArrayProxy 提供了许多友好的功能(通过 Ember.Array、Ember.Enumerable...)。使用“forEach”通常可以避免循环。在您的第二个示例中,您可以考虑使用“地图”。这是Ember.ArrayProxy 文档的链接。一定要看:Ember.ArrayEmber.Enumerable

编辑:

例如,假设 id 的顺序不相关,您的第一个示例可以写成:

var idsList = myArrayProxy.mapProperty('id').join(',');
于 2012-07-04T07:13:44.720 回答