【问题标题】:having trouble targeting element of an array instead of it's position using a for loop使用 for 循环定位数组元素而不是其位置时遇到问题
【发布时间】:2017-10-18 01:29:38
【问题描述】:

运行此函数时,我不断返回一个仅返回第一个参数 (a) 的数组。最终目标是返回一个找到与第二个参数 (b) 匹配的数组并将其从第一个参数中删除。我在下面包含了两个测试功能。我已经研究了一段时间,似乎它只是忽略了我的“if”语句中的条件。谁能发现为什么?我也愿意采用更简洁的方法来做到这一点,因为我还在学习 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]);

【问题讨论】:

    标签: javascript arrays for-loop if-statement


    【解决方案1】:

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

    因为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]) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多