問題が発生しています。JSにも同様の文字列の配列があります。
const users = [
{
age: 13,
username: "adam",
interests: []
},
{
age: 20,
username: "eve"
interests: [
{
name: "Bars",
},
{
name: "Cafe",
},
],
},
{
age: 23,
username: "alex"
interests: [
{
name: "Bars",
},
{
name: "Healthy",
},
{
name: "Japanese",
},
],
},
];
const interests = ["Bars", "Cafe"];
そして、の配列と同じ関心を持つユーザーをフィルタリングしたいと思いますinterests
。
希望する結果が得られずに、さまざまな方法で試しました。これをどのように進めればよいですか?
少なくとも1つの一致するインタレストを持つユーザー、またはすべての必要なインタレストを持つユーザーの希望する結果に応じて、またはいずれArray#some
かArray#every
を使用して、インタレストをフィルタリングできます。
const
users = [{ age: 13, username: "adam", interests: [] }, { age: 20, username: "eve", interests: [{ name: "Bars" }, { name: "Cafe" }] }, { age: 23, username: "alex", interests: [{ name: "Bars" }, { name: "Healthy" }, { name: "Japanese" }] }],
interests = ["Bars", "Cafe"],
one = users.filter(o => interests.some(i => o.interests.some(({ name }) => name === i))),
all = users.filter(o => interests.every(i => o.interests.some(({ name }) => name === i)));
console.log(one);
console.log(all);
.as-console-wrapper { max-height: 100% !important; top: 0; }
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加