apache-flex - Flex ArrayCollection 按属性值检测重复项

标签 apache-flex actionscript-3

我很好奇检测数组集合是否包含由对象的属性值确定的重复对象的最佳方法。例如,

var _myArrayCollection:ArrayCollection = new ArrayCollection([{name: "name1", value: "value1"}, {name: "name2", value: "value2"}, {name: "name1", value: "value3"}]);

请注意,此数组集合有 3 个项目。其中 2 个项目的 name 属性值相同。我认为这是重复的。

你知道这个方法的主体是什么样子吗?我有一些想法,但没有一个感觉很优雅。

private function containsDuplicates(ac:ArrayCollection, property:String):Boolean

最佳答案

您可以将给定属性的值保存在数组中,并继续在该数组内搜索重复项。唯一不好的部分是搜索时间随着数组大小的增加而增加。

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;

更有效(但更复杂的解决方案)可能是保存值,对它们进行排序,然后执行一次运行来搜索重复项。

关于apache-flex - Flex ArrayCollection 按属性值检测重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221964/

相关文章:

php - 通过 Post 发送 Json 对象到 Laravel

flash - 如何集成 Flash Professional 和 Flash Builder?

Flash CS5 - 当我更改文本属性时文本消失,除非我没有设置别名

apache-flex - 如何使用 Maven 构建 Adob​​e Air 项目?

apache-flex - 使 MXML 组件将点击目标报告为组件而不是子组件

apache-flex - 有人在使用Adobe的Project Alchemy做任何事情吗?

apache-flex - 在 Flex 选项卡式 View 导航器之间切换

apache-flex - 弹性 : Cannot tab between controls on a modal popup

apache-flex - DDD 和客户端/服务器应用程序

actionscript-3 - 错误 : unable to open AIRSDK/frameworks/libs/player/11. 1/playerglobal.swc