簡體   English   中英

對象數組上的過濾器數組包含 javascript

[英]Filter array on object's array contains javascript

我有一個這樣的數組:

let posts = [
  {title: "1", tags: ["funny", "good", "nice"]},
  {title: "2", tags: ["weird", "bad"]},
  {title: "3", tags: ["funny", "good"]},
];

而且我希望數組只有“標簽”數組具有“有趣”和“好”的對象。 Array 應該包括“tags”數組包含的所有有趣和好的對象。 不是只包含“有趣”和“好”的對象。

這就是我現在所擁有的,但它不起作用:

let postsfilter = posts.filter(post => post.tags.indexOf(["funny", "good"]));

您可以使用.filter()以及.every().includes()來獲得所需的輸出:

 let posts = [ {title: "1", tags: ["funny", "good", "nice"]}, {title: "2", tags: ["weird", "bad"]}, {title: "3", tags: ["funny", "good"]}, ]; let filterBy = ["funny", "good"]; let output = posts.filter( ({ tags }) => filterBy.every(s => tags.includes(s)) ); console.log(output);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

您可以使用Array#every獲取wanted數組的所有項目,並使用Array#includes來檢查數組是否包含字符串。

 let posts = [{ title: "1", tags: ["funny", "good", "nice"] }, { title: "2", tags: ["weird", "bad"] }, { title: "3", tags: ["funny", "good"] }], wanted = ["funny", "good"], result = posts.filter(({ tags }) => wanted.every(s => tags.includes(s))); console.log(result);

let postsfilter = posts.filter(post => post.tags.includes("funny") && post.tags.includes("good") );

 let posts = [ {title: "1", tags: ["funny", "good", "nice"]}, {title: "2", tags: ["weird", "bad"]}, {title: "3", tags: ["funny", "good"]}, ]; let filtered = posts.filter((v) => v.tags.includes("funny") && v.tags.includes("good")) console.log(filtered)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM