如何按id筛选


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方法,但它显示空数组[]

您有几个问题:

  1. 当对象使用id时,您使用的是.story_id
  2. 您正在尝试检查一个数字是否等于数组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);

最新更新