鉴于
<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]
但由于某些原因,我不喜欢这样做,太冗长,也许有一种更优雅的方法。
由于
答案 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);
虽然它可能不是“更漂亮”......