JS过滤器功能问题

时间:2018-07-06 07:15:01

标签: javascript function filter

function filter() {
  var array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];

  var array2 = array1.filter(function(n) {
    return array1[n] = 1;
  });

  console.log(array2);
}

filter();

此函数返回具有以下值的数组:

[1, 1, 3, 1, 5, 1, 7, 1, 9]

我不明白为什么?有人可以帮我解释一下吗

2 个答案:

答案 0 :(得分:4)

这是因为return array1[n] = 1;始终返回true,并且每种情况下都会返回每个元素。也请===对其进行更改。

答案 1 :(得分:0)

var array1 = [1,2,3,4,5,6,7,8,9];  数组索引= [0,1,2,3,4,5,6,7,8]

var array2 = array1.filter(function(n){

    return array1[n] = 1;
});

步骤1:

array1.filter(function(1){//数组1的第一个值

    return array1[1] = 1; // you assigning the  index 1 of array as 1
});

输出:现在array1将如下所示:[1,1,3,4,5,6,7,8,9]

步骤2:

array1.filter(function(1){// array1的第二个值为1

    return array1[1] = 1; // you assigning the  index 1 of array as 1
});

现在array1将如下所示:[1,1,3,4,5,6,7,8,9]

步骤2:

array1.filter(function(3){//数组1的第三个值

    return array1[3] = 1; // you assigning the index 3 of array as 1
});

现在array1将如下所示:[1,1,3,1,5,6,7,8,9]

类似地,这将应用于剩余的数组值