Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript为什么array.filter跳过第一个值?_Javascript_Arrays - Fatal编程技术网

JavaScript为什么array.filter跳过第一个值?

JavaScript为什么array.filter跳过第一个值?,javascript,arrays,Javascript,Arrays,我发现array.filter有一个奇怪的怪癖,我还没有找到任何引用。我试图使用条件集获取数组中的前三个值,以返回索引小于3的所有值。但结果数组不包含第一个值。我取出我的条件,将其与.map和.forEach进行比较,这两个方法检索第一个值。我是否缺少有关.filter的内容 var-arr=[0,1,2,3,4,5,6,7,8]; var filterArr=arr.filter(函数(v,i){返回v;}); console.log(filterArr);//[1, 2, 3, 4, 5,

我发现
array.filter有一个奇怪的怪癖,我还没有找到任何引用。我试图使用条件集获取数组中的前三个值,以返回索引小于3的所有值。但结果数组不包含第一个值。我取出我的条件,将其与
.map
.forEach
进行比较,这两个方法检索第一个值。我是否缺少有关
.filter
的内容

var-arr=[0,1,2,3,4,5,6,7,8];
var filterArr=arr.filter(函数(v,i){返回v;});
console.log(filterArr);//[1, 2, 3, 4, 5, 6, 7, 8]
var mapArr=arr.map(函数(v,i){return v;});
console.log(mapArr);//[0, 1, 2, 3, 4, 5, 6, 7, 8]
var eachArr=[];
arr.forEach(函数(v,i){
每推一次(v);
});
控制台日志(eachArr);[0,1,2,3,4,5,6,7,8]
调用每个元素的回调,其中回调是:

函数测试数组的每个元素。使用参数(元素、索引、数组)调用。返回true以保留元素,否则返回false


您将返回传递给它的元素
v
<代码>0
为“”,因此生成的筛选数组不包含它。

您正在筛选出第一个值:

var filterArr = arr.filter(function(v,i){ return v; });

filter
遍历每个元素,并在返回
false
时删除项目
0
在布尔上下文中等于
false
。这就是第一个元素消失的原因。

…因为您没有阅读
Array.prototype.filter()的文档。