包含的筛选器数组失败



这就像预期的那样,我会返回"香蕉;。。。

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])            
);

最新更新