代码之家  ›  专栏  ›  技术社区  ›  adamcodes

限制数组集合中的值

  •  1
  • adamcodes  · 技术社区  · 15 年前

    我有一个数组集合,我想限制为100个项目。我尝试设置一个过滤器函数,返回值为:

    返回(myac.getitemindex(item)>100);

    但是这个值总是-1。不管什么原因,它都找不到物品,即使物品确实在那里。

    我可以通过一个while循环来完成这项工作:

    而(myac.length>100)myac.removeitemat(100);

    我还有别的办法可以做到吗?谢谢!

    4 回复  |  直到 15 年前
        1
  •  4
  •   jason    15 年前

    嗯,我能想到的最好办法是:

    myAC = new ArrayCollection( myAC.toArray().slice(0,100) );
    

    当然,如果你能控制大小的话 ArrayCollection 先建造,那就更好了。

    请注意,您不能直接操作 source 对象的属性。从 来源 性质 阵列采集 :

    arraycollection中的数据源。arraycollection对象不表示直接对源数组所做的任何更改。始终使用ICollectionView或IList方法修改集合。

        2
  •  2
  •   Arno    15 年前

    尝试如下操作:

    myac=新的arraycollection(myac.source.slice(0100));

    不是这样测试的

        3
  •  1
  •   Sean Clark Hess    15 年前

    首先,您的“>”应该在第一行代码中是“<”。你要保留前100个项目,而不是扔掉它们。我敢打赌筛选将中断,因为当您筛选数组集合时,GetItemIndex将更改。因为你总是丢弃开头的部分,所以没有任何东西可以放在里面。

    不确定,但这是个开始

        4
  •  0
  •   Joel Hooks    15 年前

    我将把arraycollection包装在一个名为limitedarraycollection的类中,该类将limit作为可选的编译器参数。然后重写会影响这类功能的适当公共方法(additem等)。从开发和重用的角度来看,这将更加清晰。当你试图使用过滤器或其他聪明的方法时,它将消除你不可避免地要面对的任何歧义。

    推荐文章