过滤Javascript数组以检查所有嵌套对象中的特定值

问题描述 投票:1回答:1

我正在尝试过滤数组,以检查所有嵌套对象(我的项目包含其他项目)的特定值是否符合我的条件。

下面的方法工作正常,但是我需要迭代该过程,直到找到所有匹配的元素。

// 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);

提前感谢。

javascript arrays filter
1个回答
1
投票

您正在寻找every方法:

every

或如果您在ES5中需要它:

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

return superhero.group && superhero.group.items && superhero.group.items.every(function(item) { return item.id === "1517"; }); 为数组中的每个条目调用一次其回调,并在回调第一次返回falsy¹值时返回every,或者如果回调从不返回falsy值(包括如果没有返回值),则返回false数组中的所有条目)。也就是说,它检查数组中的“每个”项是否与回调表示的谓词匹配。


¹“假值”-falsy值是当用作条件(例如true)时得出的值为false。伪造的值是if (x)0""nullundefined,当然还有NaN;所有其他值均为truthy

© www.soinside.com 2019 - 2024. All rights reserved.