【问题标题】:Problems with filtering a nested array in javascript在javascript中过滤嵌套数组的问题
【发布时间】:2018-08-03 21:49:18
【问题描述】:

我在尝试过滤 javascript 中的嵌套数组时收到错误消息。任务是构建一个函数,用于过滤掉输入数组的任何子数组(如果它们包含特定元素)。

我当前的代码是:

function filteredArray(arr, elem) {

let newArr = [];

  newArr = [...arr];
  console.log(newArr);
  for (var i=0; i < newArr.length; i++) {
    newArr.filter(newArr[i] => newArr[i].indexOf(elem) >= 0);
  }
  return newArr;}

javascript 显然不喜欢我尝试根据子数组 newArr[i] 过滤 newArr,因为它指出 [] 是意外标记。这是怎么回事?

【问题讨论】:

  • 您正在将箭头函数中的 newArr[i] 分配给一个变量。这是不可能的
  • 将整个函数替换为return arr.filter(subArr =&gt; !subArr.includes(elem))
  • 这不是 lambdas 的工作方式,x=&gt;y 主要是 function(x){return y} 的简短版本,这就是括号在那里没有意义的原因。

标签: javascript filter


【解决方案1】:

使用Array#filterArray#includes,您可以非常轻松地过滤掉包含特定元素的数组:

const filteredArray = (array, elem) => array.filter(subArray => !subArray.includes(elem));

let testArr = [[1,2,3,4, "a"],[1,2,3,4,8],[1,2,3,4, "a"],[1,2,3,4,5]];

console.log(filteredArray(testArr, "a"));

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2020-08-25
    • 1970-01-01
    • 2022-08-17
    • 2021-03-15
    • 2022-08-19
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多