Javascript 数组过滤器方法不起作用
我试图使用filter方法从基于索引的数组中删除项,但它不起作用。例如:下面的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
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);