在类型记录中,我有两个数组:
var StarWarsChars: any = [
"Jedi Yoda",
"Jedi Mace Windu",
"Jedi Qui-Gon Jinn",
"Jedi Qui-Gon Jinn",
"Jedi Obi-Wan Kenobi",
"Sith Count Dooku",
"Sith Darth Sidious",
"Droid R2-D2",
"Droid R2-D2",
"Droid C-3PO",
"Droid BB-8"
];
var StarWarsFilter: any = ["Jedi", "Sith"];我希望创建第三个数组,该数组由来自StarWarsChars数组的值组成,其中值包含StarWarsFilter中的值。我知道如何对单个值进行筛选:
var StarWarsFiltered = StarWarsChars.filter(e =>
e.includes(StarWarsFilter[0])
);返回:
0: "Jedi Yoda"
1: "Jedi Mace Windu"
2: "Jedi Qui-Gon Jinn"
3: "Jedi Qui-Gon Jinn"
4: "Jedi Obi-Wan Kenobi"但我不知道如何对StarWarsFilter中的所有值执行此筛选。我可以尝试一个循环,但我想有一个更好的方法。
发布于 2018-09-26 07:13:44
首先,我建议对数组使用正确的类型:string[]
您应该能够做到以下几点:
var StarWarsChars: string[] = [
"Jedi Yoda",
"Jedi Mace Windu",
"Jedi Qui-Gon Jinn",
"Jedi Qui-Gon Jinn",
"Jedi Obi-Wan Kenobi",
"Sith Count Dooku",
"Sith Darth Sidious",
"Droid R2-D2",
"Droid R2-D2",
"Droid C-3PO",
"Droid BB-8"
];
var StarWarsFilter: string[] = ["Jedi", "Sith"];
var StarWarsFiltered = StarWarsChars.filter(e =>
StarWarsFilter.some(f => e.includes(f))
);发布于 2018-09-26 07:49:05
const StarWarsFiltered = StarWarsChars.filter(x => x.split(' ').some(y => StarWarsFilter.includes(y)));
这将返回StarWarsChars中包含StarWarsFilter中一个单词的所有项。
https://stackoverflow.com/questions/52511528
复制相似问题