首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切片XMLList而不是数组

切片XMLList而不是数组
EN

Stack Overflow用户
提问于 2011-02-02 22:00:39
回答 2查看 751关注 0票数 1

如何从我的xmllist中获得类似于数组的片方法的一系列项?

切片(startIndex,endIndex);

我正在尝试这样的方法:

代码语言:javascript
复制
            var tempXMLList:XMLList = new XMLList();

            for( var i:int = startIndex; i <= endIndex; i++){
                tempXMLList += originalList[i];
            }

但是我得到了一个错误,它不能转换originalListi

-最新消息

我用了提摩菲的函数,它工作得很好。

代码语言:javascript
复制
private function SliceXMLList(xmllist : XMLList, startIndex : int, endIndex : int) : XMLList
{
    return xmllist.(childIndex() >= startIndex && childIndex() <= endIndex);
}

但是,当我使用已经过滤的xmllist时,它会中断。

代码语言:javascript
复制
filteredData = filteredData.(team == "Ari");

trace("filteredData.length(): " + filteredData.length().toString());
pData = SliceXMLList(filteredData, startIndex, endIndex);
trace("start: " + startIndex.toString() + " end: " + endIndex.toString());
trace("pdata length: " + pData.length().toString());

输出

代码语言:javascript
复制
filteredData.length(): 55
start: 0 end: 55
pdata length: 5
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-02 22:22:42

使用e4x。

代码语言:javascript
复制
private function SliceXMLList(xmllist : XMLList, startIndex : int, endIndex : int) : XMLList
{
    return xmllist.(childIndex() >= startIndex && childIndex() <= endIndex);
}

更新:

如果要在一些e4x排序之后使用这个函数,就会出现一个问题,因为childIndex()函数返回节点索引的旧值,因此不能更改它。所以,我有另一个想法:

代码语言:javascript
复制
private function SliceXMLList(xmllist : XMLList, startIndex : int, endIndex : int) : XMLList
{
    for (var i : int = 0; i < xmllist.length(); i++)
        xmllist[i].@realIndex = i;
    xmllist =  xmllist.(@realIndex >= startIndex && @realIndex <= endIndex);
    for (i = 0; i < xmllist.length(); i++)
        delete xmllist[i].@realIndex;
    return xmllist;
}

或者只是

代码语言:javascript
复制
private function SliceXMLList(xmllist : XMLList, startIndex : int, endIndex : int) : XMLList
{
    var newXMLList : XMLList = new XMLList();
    var currIndex : int = 0;
    for (var i : int = startIndex; i <= endIndex; i++)
        newXMLList[currIndex++] = xmllist[i];
    return newXMLList;
}

我认为这是最好的变体。当然,一行e4x语句要优雅得多,但不幸的是,它不能重用。

票数 4
EN

Stack Overflow用户

发布于 2011-02-02 22:05:29

不确定您期望它如何工作,但是您可以遍历所有的子程序,并将每个子程序保存到一个数组中,然后以这种方式对它们进行修剪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4880394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档