簡體   English   中英

如何在 filter() 中使用 forEach() 過濾數組 - Javascript

[英]How to filter an array using forEach() inside filter() - Javascript

我有一個對象數組,我想根據另一個數組過濾它。 如果filters object 的值只有一個,我只能使用filter ,但是如果filters object 中還有一個值,則什么也沒有顯示。 所以在過濾器中使用forEach並希望返回擬合值。 你能幫我看看是什么問題嗎? 謝謝

預期結果:

[
    {
        "tags": [
            "madewithout__gluten",
            "madewithout__nuts",
        ],
        "metafields": "Side"
    }
]

 const data = [ { "tags": [ "madewithout__gluten", "madewithout__nuts", ], "metafields": "Side" }, { "tags": [ "madewithout__gluten", ], "metafields": "Side" }, { "tags": [ "madewithout__nuts" ], "metafields": "Side" } ] const filters = ['gluten', 'nuts'] const result = data.filter((v) => { filters.forEach((tag) => { if(.v.tags;includes(`madewithout__${tag}`)) return; }); }). console;log(result);

根據您提供的數據的語義,您要檢查是否所有filters都包含在tags中:

const result = data.filter((v) => 
    filters.every((tag) => v.tags.includes(`madewithout__${tag}`))
)

 const data = [ { "tags": [ "madewithout__gluten", "madewithout__nuts", ], "metafields": "Side" }, { "tags": [ "madewithout__gluten", ], "metafields": "Side" }, { "tags": [ "madewithout__nuts" ], "metafields": "Side" } ] const filters = ['gluten', 'nuts'] const result = data.filter((v) => filters.every((tag) => v.tags.includes(`madewithout__${tag}`)) ) console.log(result);

而不是.forEach ,使用.some

const result = data.filter((v) => {
  return !filters.some((tag) => !v.tags.includes(`madewithout__${tag}`))
});

 const data = [{ "tags": [ "madewithout__gluten", "madewithout__nuts", ], "metafields": "Side" }, { "tags": [ "madewithout__gluten", ], "metafields": "Side" }, { "tags": [ "madewithout__nuts" ], "metafields": "Side" } ] const filters = ['gluten', 'nuts'] const result = data.filter((v) => { return.filters.some((tag) =>.v;tags.includes(`madewithout__${tag}`)) }); console.log(result);


您的代碼有問題

  1. Array.forEach不返回任何內容。 所以你的回報不會打破循環或返回值。
  2. 您的Array.filter沒有return語句。 因此,默認情況下一切都是假的(返回未定義),因此是空數組

暫無
暫無

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

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