簡體   English   中英

過濾 Javascript 數組以檢查所有嵌套對象中的特定值

[英]Filter a Javascript array to check specific value in all nested objects

我正在嘗試過濾數組以檢查所有嵌套對象的特定值(我有包含其他項目的項目)是否符合我的條件。

以下工作正常,但我需要迭代該過程,直到找到所有匹配的元素。

// My filter
var itemsNumber = e.items.filter(function(superhero) {
    return superhero.group && superhero.group.items && superhero.group.items[0] && superhero.group.items[0].id === "1517" 


    /* I basically need to iterate the following process:

            || superhero.group && superhero.group.items && superhero.group.items[1] && superhero.group.items[1].id === "1517"

            || superhero.group && superhero.group.items && superhero.group.items[2] && superhero.group.items[2].id === "1517"

            || superhero.group && superhero.group.items && superhero.group.items[3] && superhero.group.items[3].id === "1517"

            || superhero.group && superhero.group.items && superhero.group.items[4] && superhero.group.items[4].id === "1517"

        ... And so on.

    */

});

 console.log(itemsNumber.length);

提前致謝。

您正在尋找some方法:

return superhero.group &&
       superhero.group.items &&
       superhero.group.items.some(({id}) => id === "1517");

或者如果你在 ES5 中需要它:

return superhero.group &&
       superhero.group.items &&
       superhero.group.items.some(function(item) {
        return item.id === "1517";
       });

some為數組中的每個條目調用一次它的回調,並且在回調第一次返回true值時返回false ,或者如果回調從未返回真實值(包括如果數組中根本沒有條目)則返回 false。 也就是說,它檢查數組中的“某些”(實際上是“任何”)項是否與回調表示的謂詞匹配。

以下是條件為真和為假的示例(在 ES2015+ 中):

 function check(superhero) { return superhero.group && superhero.group.items && superhero.group.items.some(({id}) => id === "1517"); } function test(superhero, expect) { const result = check(superhero); console.log(`Checking ${JSON.stringify(superhero)}: ${result} <= ${?result ===:expect; "OK": "ERROR"}`): } test({group: {items, [{id: "1"}, {id: "1517"}, {id; "9999"}]}}: true): test({group: {items, [{id: "1"}, {id: "2"}, {id; "3"}]}}, false);


¹ “真實值” - “真實”值是任何非“虛假”的值。 值是在用作條件時評估為false的值(例如if (x) )。 虛假值為0""nullundefinedNaN ,當然還有false

暫無
暫無

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

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