[英]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.