Emberjs:迭代ArrayProxy内容的最佳方式?

Flo*_*ali 5 ember.js

通常,我需要遍历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(',');
Run Code Online (Sandbox Code Playgroud)

例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
                   });
}
Run Code Online (Sandbox Code Playgroud)

问题:有更好的方法吗?"while( - loc> = 0)"对我来说似乎很糟糕.

Sté*_*ond 8

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

编辑:

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

var idsList = myArrayProxy.mapProperty('id').join(',');
Run Code Online (Sandbox Code Playgroud)