Javascript 如何过滤数组的I循环

Javascript 如何过滤数组的I循环,javascript,Javascript,我使用以下代码来获得数组的循环 let findingArray=this.listNumber[i].GenericQuestions; for(设k=0;k1})删除不满足表达式的元素(结果是[2,3])。假设您有let list=[],[1,2,3],[]您可以执行list.filter(element=>{element.length>0})。过滤就是过滤元素。在您的例子中,元素是其他数组,但其工作方式相同 请注意一点,过滤器是一种纯粹的,即非破坏性的,即非改变功能;这意味着它不会更改输

我使用以下代码来获得数组的循环

let findingArray=this.listNumber[i].GenericQuestions;
for(设k=0;k
它按预期返回所有查找数组

我想做的是从循环中过滤掉所有的空数组


所有搜索似乎都指向我在数组内部进行筛选,但没有筛选出空数组。

使用您的代码,只要输入一个
if
。空数组是长度为0的数组

let findingArray=this.listNumber[i].GenericQuestions;
for(设k=0;k

或者,使用
过滤器
:
这是更好的,因为它更可读(因此可以理解),写得更短,而且没有破坏性

所以
[1,2,3].filter(element=>{element>1})
删除不满足表达式的元素(结果是
[2,3]
)。假设您有
let list=[],[1,2,3],[]
您可以执行
list.filter(element=>{element.length>0})
。过滤就是过滤元素。在您的例子中,元素是其他数组,但其工作方式相同

请注意一点,
过滤器
是一种纯粹的,即非破坏性的,即非改变功能;这意味着它不会更改输入,而是返回一个新副本。也许这就是困扰你的原因。因此:

let list = [ [], [1, 2, 3], [] ];
list.filter(element => { element.length > 0 });
console.log(list); // returns the original!

// instead
let newList = list.filter(element => { element.length > 0 });
console.log(newList); // returns the filtered list
最后,要更新完整的代码,您可以通过这样做来大大简化,这与您的代码相同(取决于代码段中不可见的一些细节,但一般来说,要点是,尝试使用这种样式):


使用您的代码,只要输入
if
。空数组是长度为0的数组

let findingArray=this.listNumber[i].GenericQuestions;
for(设k=0;k

或者,使用
过滤器
:
这是更好的,因为它更可读(因此可以理解),写得更短,而且没有破坏性

所以
[1,2,3].filter(element=>{element>1})
删除不满足表达式的元素(结果是
[2,3]
)。假设您有
let list=[],[1,2,3],[]
您可以执行
list.filter(element=>{element.length>0})
。过滤就是过滤元素。在您的例子中,元素是其他数组,但其工作方式相同

请注意一点,
过滤器
是一种纯粹的,即非破坏性的,即非改变功能;这意味着它不会更改输入,而是返回一个新副本。也许这就是困扰你的原因。因此:

let list = [ [], [1, 2, 3], [] ];
list.filter(element => { element.length > 0 });
console.log(list); // returns the original!

// instead
let newList = list.filter(element => { element.length > 0 });
console.log(newList); // returns the filtered list
最后,要更新完整的代码,您可以通过这样做来大大简化,这与您的代码相同(取决于代码段中不可见的一些细节,但一般来说,要点是,尝试使用这种样式):


我最后做的是使用Array.isArray,然后查找长度。向上投票的答案有一些非常好的信息,也会向上投票,但我的代码的作用是

    let findingArray = this.listNumber[i].GenericQuestions;
      for(let k = 0; k < findingArray.length; k++){ 
        let listArray = findingArray[k].Finding;
        if (Array.isArray(listArray) && listArray.length) {
         console.log("listArray", listArray);
        }
      }
let findingArray=this.listNumber[i].GenericQuestions;
对于(设k=0;k
我最后做的是使用Array.isArray,然后查找长度。向上投票的答案有一些非常好的信息,也会向上投票,但我的代码的作用是

    let findingArray = this.listNumber[i].GenericQuestions;
      for(let k = 0; k < findingArray.length; k++){ 
        let listArray = findingArray[k].Finding;
        if (Array.isArray(listArray) && listArray.length) {
         console.log("listArray", listArray);
        }
      }
let findingArray=this.listNumber[i].GenericQuestions;
对于(设k=0;k
什么是“从循环中过滤掉所有空数组”?你不想记录它们吗?是否要将其从阵列中删除?是否要在不使用它们的情况下创建新阵列?请清楚。为什么不添加一个if条件来检查数组是否在循环中有一些长度。您是否尝试过
arr.filter(item=>item.length)
?这是否回答了您的问题?您可以向循环中添加
if
语句,也可以使用
arr.filter()
。“从循环中过滤掉所有空数组”是什么意思?你不想记录它们吗?是否要将其从阵列中删除?是否要在不使用它们的情况下创建新阵列?请清楚。为什么不添加一个if条件来检查数组是否在循环中有一些长度。您是否尝试过
arr.filter(item=>item.length)
?这是否回答了您的问题?您可以向循环中添加
if
语句,也可以使用
arr.filter()