Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 数组过滤器方法不起作用_Javascript_Arrays - Fatal编程技术网

Javascript 数组过滤器方法不起作用

Javascript 数组过滤器方法不起作用,javascript,arrays,Javascript,Arrays,我试图使用filter方法从基于索引的数组中删除项,但它不起作用。例如:下面的filteredGroceries应该返回[{“name”:“Apples”,“completed”:false},{“name”:“231312”},{“name”:“765656”}]。但它会返回杂货中的所有元素。 我确信我犯了一个新手错误。 我做错了什么 var groceries= [{"name":"Apples","completed":false},{"name":"231312"},{"name":"4

我试图使用filter方法从基于索引的数组中删除项,但它不起作用。例如:下面的
filteredGroceries
应该返回
[{“name”:“Apples”,“completed”:false},{“name”:“231312”},{“name”:“765656”}]
。但它会返回杂货中的所有元素。
我确信我犯了一个新手错误。
我做错了什么

var groceries= [{"name":"Apples","completed":false},{"name":"231312"},{"name":"454334"},{"name":"765656"}];
var indexToRemove=2;
var filteredGroceries = groceries.filter(item => item.index !== indexToRemove);   

您正在将带有一个参数的函数传递给筛选器,而如果传递了两个参数,则第二个参数是索引:

var filteredGroceries = groceries.filter((item,index) => index !== indexToRemove);   
目前,您正在访问数组中每个对象的
'index'
属性,该属性始终是
未定义的
,因此所有元素都通过了测试

.filter
的文档显示,要获取索引,需要第二个参数:


您正在将带有一个参数的函数传递给筛选器,而如果传递了两个参数,则第二个参数是索引:

var filteredGroceries = groceries.filter((item,index) => index !== indexToRemove);   
目前,您正在访问数组中每个对象的
'index'
属性,该属性始终是
未定义的
,因此所有元素都通过了测试

.filter
的文档显示,要获取索引,需要第二个参数:


您没有定义
索引
参数

var groceries=[{“name”:“Apples”,“completed”:false},{“name”:“231312”},{“name”:“454334”},{“name”:“765656”}];
var-indexToRemove=2;
var filteredGroceries=groceries.filter((项目,索引)=>index!==index-xtoremove);

console.log(filteredGroceries)
您没有定义
索引
参数

var groceries=[{“name”:“Apples”,“completed”:false},{“name”:“231312”},{“name”:“454334”},{“name”:“765656”}];
var-indexToRemove=2;
var filteredGroceries=groceries.filter((项目,索引)=>index!==index-xtoremove);

console.log(filteredGroceries)您的回调返回一个选项项,它没有属性索引 添加另一个参数

var groceries= [{"name":"Apples","completed":false},{"name":"231312"},{"name":"454334"},{"name":"765656"}];
var indexToRemove=2;
var filteredGroceries = groceries.filter((item, index) => index !== indexToRemove); 

回调返回一个选项项,它没有属性索引 添加另一个参数

var groceries= [{"name":"Apples","completed":false},{"name":"231312"},{"name":"454334"},{"name":"765656"}];
var indexToRemove=2;
var filteredGroceries = groceries.filter((item, index) => index !== indexToRemove); 
此行是在现有数组的基础上创建新数组,并且不会返回包含索引键的元素/对象。考虑到您的对象数组包含非键索引的对象,您将返回整个数组。如果要从数组中删除第二个元素,应该使用groceries.splice(1,0)


此行是在现有数组的基础上创建新数组,并且不会返回包含索引键的元素/对象。考虑到您的对象数组包含非键索引的对象,您将返回整个数组。如果要从数组中删除第二个元素,则应使用groceries.splice(1,0)

您的
项目中没有一个具有
.index
属性。您可能是指
groceries.filter((项目,索引)=>index!==indexToRemove)
。但是为什么不直接使用
切片
拼接
?你是想在回调中使用a吗?@xufox:谢谢。正如你所理解的,我正试图用Javascript把脚弄湿。我没有使用splice,因为该方法会对数组进行变异(我使用的是ReactJs)。您的
项目
没有
.index
属性。您可能是指
杂货.filter((项目,索引)=>index!==indexToRemove)
。但是为什么不直接使用
切片
拼接
?你是想在回调中使用a吗?@xufox:谢谢。正如你所理解的,我正试图用Javascript把脚弄湿。我没有使用splice,因为该方法会改变数组(我使用的是ReactJs)。
var filteredGroceries = groceries.filter((item, i) => i !== indexToRemove);