LeetCode 问题 - 2634。从数组中过滤元素

问题描述 投票:0回答:1

当我尝试在没有 Number() 的情况下运行此代码时,它不起作用。

ar filter = (arr, fn) => {
 let filteredArr = [];

   for(const i in arr){

      if(fn(arr[i], Number(i)))  filteredArr.push(arr[i])
      
   }

return filteredArr;
};

我不明白为什么这段代码在没有 Number() 的情况下不起作用,如果索引是某个数字,至少是 0,它是一个整数,那么它应该可以工作...你能帮我吗?我将非常感激。

javascript distinct-values
1个回答
0
投票

因为你使用...在:

var filter = (arr, fn) => {
    let filteredArr = [];
    for(const i in arr){
        console.log(typeof i)
        if(fn(arr[i], Number(i)))  filteredArr.push(arr[i])
    }
    return filteredArr;
};

此循环用于对象,不建议用于数组。

您可以尝试使用由三个可选表达式组成的循环:

var filter = (arr, fn) => {
    let filteredArr = [];
    for(var i=0; i<arr.length; i++){
        if(fn(arr[i], i))  filteredArr.push(arr[i])
    }
    return filteredArr;
};
© www.soinside.com 2019 - 2024. All rights reserved.