我有一个包含不同属性的对象的数组。有些属性相似的对象。例如,
var array=[{'property':1},{'property':2},{'property':1}]
如何使用ember js获取具有唯一属性的数组?
最后我需要一个
数组[{'property':1},{'property':2}]
非常感谢您的帮助。
更新:我尝试了uniq()方法。但是这不允许传递属性,因为ember允许进行排序。
谢谢!
答案 0 :(得分:6)
我们可以使用Ember< uniqBy方法在一行代码中完成。
假设我们有这个数组=>
var arrayName=[{'property':1},{'property':2},{'property':1}]
要获得唯一数组,您需要执行以下操作=>
arrayName.uniqBy('property');
将返回以下=>
var arrayName=[{'property':1},{'property':2}]
uniqBy返回一个新的枚举,它只包含包含唯一属性值的项目。无论接收器类型如何,默认实现都会返回一个数组。(link to Ember Guide)
答案 1 :(得分:4)
执行此操作的一种方法是将filter
method与isAny
method
App.IndexController = Ember.ArrayController.extend({
unique: function(){
var model = this.get('model');
var uniqueObjects = [];
return model.filter(function(item){
if(!uniqueObjects.isAny('property', item.property)){
uniqueObjects.push(item);
return true;
}
return false;
});
}.property('model')
});
工作示例here