gpt4 book ai didi

actionscript-3 - 从数组中删除项目数组

转载 作者:行者123 更新时间:2023-11-30 23:49:10 25 4
gpt4 key购买 nike

我想到了这个简单的片段。

var a:Array = new Array( 1,2,3,4,5,6,7,8);
var b:Array = new Array( 6,7,8 ) //<<<These items need to be removed from a

public function removeItemsFromAThatAreListedInB(a:Array, b:Array )
{
for ( var i=0 ; i< a.length ;i++)
{

for ( var j=0 ; j< b.length ; j++)
{
if ( (a[i]) == (b[j]) )
{
a.splice(i,1)
}

}

}


}

只是想确定一下,是否有人有更好的“优化”和“更快”的方式来做同样的事情?

最佳答案

对于 O(n) 而非 O(n*m) 的解决方案,将 B 中的值放入一个对象中:

var i, o = {};
for (i = 0; i < b.length; i++) {
o[b[i]] = 1;
}
for (i = a.length - 1; i >= 0; i--) {
if (o.hasOwnProperty(a[i])) {
a.splice(i,1)
}
}

如果您知道数组已排序,那么您可以并行循环遍历它们:

var i = 0, j = 0;
var r = [];
while (i < a.length) {
if (a[i] < b[j]) {
r.push(a[i]);
i++;
} else {
if (a[i] == b[j]) i++;
j++;
}
}
a = r;

关于actionscript-3 - 从数组中删除项目数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com