这就像预期的那样,我会返回"香蕉;。。。
let like = ["banana"];
let fruits = [
{ name: "apple" },
{ name: "banana" },
{ name: "pear" },
];
let fruits2 = fruits.filter((f: any) => like.includes(f.name));
console.log(fruits2);
但这失败了。。。
ticketDetailsSubset2 = ticketDetailsArray.filter(
(i: any) => !excludeTickets.includes(i["stl19:TicketNumber"][0])
);
excludeTickets的数组就是这样。。。
0: ["0017522827238"]
我正在循环浏览ticketDetailsArray,它包括3个对象。。。
- 第一个对象包含-
stl19:TicketNumber: ["0017522827238"]
- 第二个对象包含-
stl19:TicketNumber: ["0017522827238"]
- 第三个对象包含-
stl19:TicketNumber: ["0017522827239"]
我应该只返回第三个对象,因为前两个对象在excludeTickets中。尽管我是一个初学者,但我还是以水果为例来证明我走在了正确的道路上。我还手动尝试了
!excludeTickets.includes("0017522827238")
但还是没用。所有东西都归还了。我有一个类似的.filter代码,带有另一个条件检查,它可以工作。有什么区别?包括在内??所以我猜includes并不是要做我认为的事情,但水果选项又起作用了??
excludeTickets
是一个二维数组(注意excludeTickets[0]
周围的方括号(,而不是字符串数组。你需要把它压平。
flatTickets = excludeTickets.flatMap(el => el);
ticketDetailsSubset2 = ticketDetailsArray.filter(
(i: any) => !flatTickets.includes(i["stl19:TicketNumber"][0])
);