获取节点的最后一次出现

时间:2012-04-01 07:23:15

标签: xml actionscript-3 e4x

鉴于

<nodeList>
    <crazyNode>Data to be overwrited</crazyNode>
    <simpleNode>Normal data</simpleNode>
    <crazyNode>Actual data</crazyNode>
</nodeList>

我想获取最后一个crazyNode(包含实际数据的那个)。

我知道如何访问第一个节点,例如:

nodeList.crazyNode[0]

我想解决方案就是

nodeList.crazyNode[nodeList.crazyNode.length() - 1]

但由于某些原因,我不喜欢这样做,太冗长,也许有一种更优雅的方法。

由于

2 个答案:

答案 0 :(得分:1)

您可以重构代码以使其更具可读性,但这是实现它的方法。由于问题本身正在获取实际索引,因此您可以声明一个新变量来保存该值,如下所示:

var lastCrazyNodeIndex: int = nodeList.crazyNode.length() - 1;

然后你可以编写一个获取最后一项的方法,这是一个想法:

public function getLastCrazyNode(nodeList:XML):Object
{
    var lastCrazyNodeIndex: int = nodeList.crazyNode.length() - 1;

    if( lastCrazyNodeIndex != -1 )
        return nodeList[ lastCrazyNodeIndex ];

    return null;
}

即使它是相同的想法,它也更具可读性。

答案 1 :(得分:1)

您可以使用以下内容:

nodeList.crazyNode.(childIndex()==length()-1);

虽然它可能不是“更漂亮”......