gpt4 book ai didi

javascript - 过滤其中包含另一个数组的数组

转载 作者:行者123 更新时间:2023-12-01 00:20:35 25 4
gpt4 key购买 nike

我正在尝试过滤数组

const array = [{
city: "Fullerton",
routes: ["Route 1", "Route 2"],
state: "CA"
}, {
city: "Long Beach",
routes: ["Route 3", "Route 4"],
state: "CA"
}, {
city: "Huntington Beach",
routes: "Route 1",
state: "CA"
}];

通过另一个数组:

const routes = ["Route 1", "Route 3"];

但是,我在过滤原始数组的路由项时遇到了麻烦,因为它有数组和字符串作为其变量。有没有办法使用路由数组并过滤原始数组而不考虑变量类型?

另外,我希望如果您选择其中一条路由,即使数组元素包含更多路由,它也会过滤数组。

最佳答案

如果你想要至少一个路由匹配,你可以组合someincludes:

const routes = ["Route 1", "Route 3"];
const array = [{city: "Fullerton", routes: ["Route 1", "Route 2"], state: "CA"}, {city: "Long Beach", routes: ["Route 3", "Route 4"], state: "CA"}, {city: "Huntington Beach", routes: "Route 1", state: "CA"}];

const filteredArray = array.filter(a =>
[].concat(a.routes).some(r => routes.includes(r))
)

console.log(filteredArray)

如果您需要完全匹配所有路由,includes 就足够了:

const routes = ["Route 1", "Route 3"];
const array = [{city: "Fullerton", routes: ["Route 1", "Route 2"], state: "CA"}, {city: "Long Beach", routes: ["Route 3", "Route 4"], state: "CA"}, {city: "Huntington Beach", routes: "Route 1", state: "CA"}];

const filteredArray = array.filter(a => routes.includes(a.routes))

console.log(filteredArray)

关于javascript - 过滤其中包含另一个数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59458486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com