函数如何获得“ x”值

时间:2018-11-15 12:24:05

标签: javascript jquery

有人可以解释代码流程吗?我需要知道函数'isEven'如何获得'x'值

 $(document).ready(function(){
    var array = [1,2,3,4,5];

    function isEven(x){ //checks if a value is even
        console.log(x)
       return x % 2 == 0; 
    }

    var newArray = array.filter(isEven); //uses a callback to check if an element is even

    console.log(newArray);
});

6 个答案:

答案 0 :(得分:3)

如代码注释中所述,您正在传递callback,因此此处在 .filter() 中处理的当前item将自动传递给此callback函数或换句话说isEven函数将与.find()调用中的当前项一起调用。

您可以在 MDN Reference for .find() 中看到:

  

回调

     

对数组中的每个值执行的函数,占用三个   参数:

     
      
  • 元素。数组中正在处理的当前元素。
  •   

所以写:

array.filter(isEven);

相当于写作:

array.filter(function(item){
    isEven(item);
});

答案 1 :(得分:2)

解决方案在此行

var newArray = array.filter(isEven); //uses a callback to check if an element is even

在这里,您正在数组上调用方法“ filter”。 Filter采用一个返回true或false的方法,并在每个数组元素上调用它,并传递元素本身。该行可以这样实现

 let newArray;
   for(let x: array){
       if(isEven(x)){
           newArray.push(x);
       }
   }

答案 2 :(得分:1)

数组上的filter()函数采用一个函数作为输入。在这种情况下,输入函数是isEven函数。然后,filter函数在数组上迭代并在每个元素上运行isEven函数。然后,它会过滤出函数返回false的数组中的所有元素。

请注意,在filter函数的括号中,您没有为isEven函数指定任何参数。这是因为filter为您做到了。

答案 3 :(得分:1)

您的代码等同于:

billdate

billdte值在您的第一个数组中获取。参见doc

答案 4 :(得分:0)

如果

array.filter在循环时没有通过this作为其参数,它将自动被接受。检查here了解更多详情。

因此,如果您的数组this的值对应于元素1,2,3,4,5

  

如果提供了thisArg参数进行过滤,它将用作   回调的这个值。否则,未定义的值将用作   它的这个值。回调最终可观察到的this值是   根据通常的规则来确定   通过功能。

答案 5 :(得分:0)

filter 是Array API中定义的函数,它接收作为参数的“ this ”,在您的情况下为变量“ array ”和一个名为“ isEven ”的回调,其中“ this”是数组的值,它只需要遍历它并为函数调用每个值。

Read this