Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每个迭代都从上一个迭代结果开始_Javascript - Fatal编程技术网

Javascript 每个迭代都从上一个迭代结果开始

Javascript 每个迭代都从上一个迭代结果开始,javascript,Javascript,如何迭代一个数组,每次迭代都取前面的结果?我在数组B中寻找相同的值,就像在数组A中一样,但数组A只有一个值,就像for in循环的结果一样。我想要返回数组C,它是数组A中所有项的开始数组减法 到目前为止,我有以下代码: x = newArray.indexOf(zeme[0]); for (b = 0; b < newArray.length; b++) { if (x === b) { newArray.splice(b, zeme.length); } } 取得成果

如何迭代一个数组,每次迭代都取前面的结果?我在数组B中寻找相同的值,就像在数组A中一样,但数组A只有一个值,就像for in循环的结果一样。我想要返回数组C,它是数组A中所有项的开始数组减法

到目前为止,我有以下代码:

x = newArray.indexOf(zeme[0]);

for (b = 0; b < newArray.length; b++) {
  if (x === b) {
    newArray.splice(b, zeme.length);
  }
}
取得成果:

array C = ['can', 'usa']
//first iteration, found 'eng' and deleted.
array C = ['usa', 'eng']
//second iteration found 'can' and deleted.
所需结果:

array C = ['usa']
//after first iteration in array left only two items ['can', 'usa']
//after second iteration take array ['can', 'usa'] and splice 'can'
如果

我想要返回数组C,它是数组A中所有项的开始数组减法

这是你问题的要点,听起来你想要数组相交

function intersect(a, b) {
    return a.filter((v) => b.indexOf(v) === -1);
}

console.log(intersect(['can', 'usa', 'eng'], ['usa', 'eng']));
输出

['can']
(注意:上面的实现没有经过优化;对于大型
b
阵列,它可能会变得非常慢,因为最坏情况下的复杂性是O(n^2)。

如果

我想要返回数组C,它是数组A中所有项的开始数组减法

这是你问题的要点,听起来你想要数组相交

function intersect(a, b) {
    return a.filter((v) => b.indexOf(v) === -1);
}

console.log(intersect(['can', 'usa', 'eng'], ['usa', 'eng']));
输出

['can']

(注意:上面的实现没有经过优化;对于大型
b
阵列,它可能会变得非常慢,因为最坏情况下的复杂性是O(n^2)。

?我仍然不明白您试图解释的内容?什么是
zeme
?我仍然不明白您试图解释的内容?什么是
zeme
?您可以得到O(n)通过创建一组
b
<代码>返回a.filter((v)=>!bSet.has(v))。当然,折衷的办法是为
集合
留出空间。谢谢,但是如果我在一个数组b中有所有的值,而我没有,这可能会起作用。在两个输出中使用b=['usa'],b=['eng'],例如来自对象键的“for in-loop”结果。我不能将这些变量推送到一个数组中,因为它不适用于“if语句”过滤。这意味着,正如我在原始问题部分“获取结果”中提到的那样,我用你的函数得到两个数组输出。@滑块和集合的初始化时间,对于较小的
b
s,这可能不值得。(一个启发式的,比如说,
b.length>20
?,是合理的。)你可以通过创建一组
b
来获得O(n)<代码>返回a.filter((v)=>!bSet.has(v))。当然,折衷的办法是为
集合
留出空间。谢谢,但是如果我在一个数组b中有所有的值,而我没有,这可能会起作用。在两个输出中使用b=['usa'],b=['eng'],例如来自对象键的“for in-loop”结果。我不能将这些变量推送到一个数组中,因为它不适用于“if语句”过滤。这意味着,正如我在原始问题部分“获取结果”中提到的那样,我用你的函数得到两个数组输出。@滑块和集合的初始化时间,对于较小的
b
s,这可能不值得。(一个启发式,比如说,
b.length>20
?,是合理的。)