如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?

Posted

技术标签:

【中文标题】如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?【英文标题】:How to remove element from array A that are also in array B in Actionscript 3.0? 【发布时间】:2019-09-06 11:05:25 【问题描述】:

假设我有包含对象的数组 A 和数组 B。如何从数组 A 中“清理”B 中也存在的元素。也就是说,我需要删除 A 中也存在于 B 中的所有元素。

【问题讨论】:

【参考方案1】:

据我了解,您正在尝试从数组 A 中删除 B 中存在的所有相似项目?

for (var i:uint = 0; i < arrayB.length; i++) 
    arrayA.splice(arrayA.indexOf(arrayB[i]), 1);

请注意,这只会删除 arrayA 中的每个项目之一。如果 arrayA 中有多个相同的实例存在于 arrayB 中,则只会删除一个。对于多个相同的实例,请改用这个:

for (var i:uint = 0; i < arrayB.length; i++) 
    while(arrayA.indexOf(arrayB[i]) >= 0) 
        arrayA.splice(arrayA.indexOf(arrayB[i]), 1);
    

【讨论】:

【参考方案2】:

这有效地删除了 Array B 中碰巧出现在 Array A 中的每个元素;

for each (var anItem:Object in B)

    var anIndex:int;

    do
    
        anIndex = A.indexOf(anItem);
        A.splice(anIndex, 1);
    
    while (anIndex > -1);

【讨论】:

以上是关于如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Actionscript 3.0中获取数组的所有排列?

在 ActionScript (3.0) 中干净地合并两个数组?

ActionScript 3.0 - 获取数组中相同值的计数

如何在actionscript 3.0中对钻石,梅花,黑桃,心等卡片进行排序

ActionScript 3.0 随机化数组、显示数字并拼接该数字

Actionscript 3.0 如何从 addChild 定义对象?