gpt4 book ai didi

apache-flex - 如何查找具有特定属性值的 ArrayCollection 项?

转载 作者:行者123 更新时间:2023-12-04 16:17:29 25 4
gpt4 key购买 nike

我有一些这样的 XML 结构:

var struct:XML = <mh>
<mi id="1" stuff="whatever"/>
<mi id="2" stuff="whatever"/>
<mi id="3" stuff="whatever"/>
</mh>;

我知道我可以通过“id”访问子节点,方式如下:
var stuff:Object = struct.(hasOwnProperty('@id') && @id == '2').@stuff;

现在我有一些类似的 ArrayCollection 结构:
private var cmenu:ArrayCollection = new ArrayCollection([
{id:"1", stuff:"whatever"},
{id:"2", stuff:"whatever"},
{id:"3", stuff:"whatever"}
]);

我想知道是否可以以类似的方式访问项目,如下所示:
var stuff:Object = cmenu['id == 2'].stuff;

是否可以?

最佳答案

您可以稍微概括一下 Matt 的答案,以便您可以传入所需的 ID 值,而不是对其进行硬编码,并且只需要一行即可获得匹配项(我假设您可能想在多个地方执行此操作)。

首先,您将编写一个函数来生成您的查找函数:

function findId(id:int):Function {
return function( element : *, index : int, array : Array ) : Boolean
{
return element.id == id;
}
}

然后我会编写一个函数来返回第一个匹配项,这样您就不必重复这两行:
function findInCollection(c:ArrayCollection, find:Function):Object {
var matches : Array = c.source.filter( find );
return ( matches.length > 0 ? matches[0] : null );
}

那么你只需这样做:
var stuff:String = findInCollection(cmenu, findId(2)) as String;

关于apache-flex - 如何查找具有特定属性值的 ArrayCollection 项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1566145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com