使用for循环定位数组元素而不是它的位置时遇到问题

时间:2017-10-18 01:29:39

标签: javascript arrays for-loop if-statement

运行此函数时,我不断返回一个只返回第一个参数(a)的数组。最终目标是返回一个与第二个参数(b)匹配的数组,并将其从第一个参数中删除。我在下面提到了两个测试功能。我已经做了一段时间了,看起来它只是忽略了我的“如果'声明。谁能发现原因?我仍然愿意采用更清洁的方式来做这件事,因为我还在学习JavaScript。提前谢谢!

function array_diff(a, b) {
  var newArr = [];
  for ( i = 0; i < a.length; i++) {
    if (b !== a[i]) {
      newArr.push(a[i]);
    }
  } 
  return newArr;
}

array_diff([1,2,2,2,3],[2]);
array_diff([1,2],[1]);

1 个答案:

答案 0 :(得分:0)

问题在于您将数组与值进行比较。

由于a[i]是一个值,b也应该是值,而不是数组,所以请尝试

array_diff([1,2,2,2,3],2);
array_diff([1,2],1);

即。 2代替[2]1代替[1]

另一种方法是改变你的if条件

if (b[0] !== a[i]) {