const allStories = [{id: 5, title: 'Hello title'}, {id: 10, title: 'Hello title2'}];
const id = ["5","25","10"];
const book = allStories.filter(story => story.story_id === id);
console.log(book)
我想按id过滤故事。我尝试过使用.filter方法,但它显示空数组[]
您有几个问题:
- 当对象使用
id
时,您使用的是.story_id
- 您正在尝试检查一个数字是否等于数组
id
,这是行不通的
相反,您可以在数组中使用.includes()
方法来检查对象的(字符串(id是否包含在id
数组中,如下所示:
const allStories = [{id: 5, title: 'Hello title'}, {id: 10, title: 'Hello title2'}];
const id = ["5","25","10"];
const book = allStories.filter(story => id.includes(String(story.id)));
console.log(book)
如果要删除id
数组中的id而不是保留它们,则可以使用!
来否定.includes()
的返回值。
首先,您要做的是将字符串与整数Object进行比较,这可能会产生可怕的结果。因此,对于这个,将id数组作为一个整数数组。此外,为了进行比较,您可以使用includes方法。它可以检查您的id是否可以存在于数组中的任何索引中。像这个
const allStories = [{id: 5, title: 'Hello title'}, {id: 10, title: 'Hello
title2'}];
const id = [5,25,10];
const book = allStories.filter(story => id.includes(story.id));
console.log(book)
您可以使用以下脚本。它对我的工作
const allStories = [{
id: 5,
title: 'Hello title'
}, {
id: 10,
title: 'Hello title2'
}];
const id = ["5", "25", "10"];
let arr = allStories.filter(function(item) {
return id.indexOf(item.id) === -1;
});
console.log(arr);