我很好奇检测到一个arraycollection包含由对象的属性值确定的重复对象的最佳方法。例如,
var _myArrayCollection:ArrayCollection = new ArrayCollection([{name: "name1", value: "value1"}, {name: "name2", value: "value2"}, {name: "name1", value: "value3"}]);
请注意,此arraycollection有3个项目。其中2个项目具有相同的name属性值。我认为这是重复的。
任何想法这个方法的主体会是什么样子?我有想法,但没有一个感觉非常优雅。
private function containsDuplicates(ac:ArrayCollection, property:String):Boolean
答案 0 :(得分:3)
您可以将给定属性的值保存在数组中,并继续在该数组中搜索重复项。唯一不好的部分是搜索时间随着数组大小的增加而增加。
var valueArray:Array = new Array();
for each (object:Object in ac) {
var value = object[property];
if (valueArray.indexOf(value) >= 0) {
return true;
} else {
valueArray.push(value);
}
}
return false;
更有效(但非常复杂的解决方案)可能是保存值,对它们进行排序,并执行单次运行以搜索重复项。
答案 1 :(得分:1)
for(var i:int=0; i<buscatype.length; i++)
{
for(var j:int = (i+1); j <buscatype.length; j++)
{
if(buscatype[i].produst_type_nameCol==buscatype[j].produst_type_nameCol)
{
buscatype.removeItemAt(j);
j-=1;
}
}
}
答案 2 :(得分:1)