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

安东尼

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

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

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

提前致谢。

TJ人群

您正在寻找的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在回调第一次返回true值时返回,或者false如果回调从不返回true值(包括数组中根本没有条目),则返回。也就是说,它检查数组中的“某些”(实际上是“任意”)项是否与回调表示的谓词匹配。

这是一个示例(在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);


¹“真实值”-“真实值”是任何不“虚假”的值。falsy值是一个值,该值的计算结果为false作为一个条件(如使用时if (x))。该falsy值0""nullundefinedNaN,当然,false

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

过滤对象数组中的所有值

如何从带有嵌套对象数组的对象数组中获取所有特定值?

从数组中的所有JavaScript对象添加特定属性的值

Javascript检查对象及其嵌套对象的所有值

如何过滤对象数组并检查特定键是否在数组中具有值

MongoDB 对象属性检查 $exists 是否在嵌套数组中具有特定值

如何在嵌套对象数组中查找特定键的所有值?

如何在React + Typescript中检查数组中的javascript对象的所有值是否为true?

如何在javascript对象数组中设置所有对象的特定属性值(虚线)

Javascript检查对象数组中的所有值是否为空

Javascript - 检查嵌套对象中是否有任何错误值

从javascript数组中过滤具有特定属性的对象

如何从具有嵌套对象数组的对象数组中获取所有值?

Javascript或lodash:使用嵌套数组的值过滤对象数组

如何根据嵌套数组中的值过滤带有对象的数组并对其进行计数

如何过滤对象数组并检查数组中是否有多个对象具有相同的属性值,请在Javascript中平移“企业”

javascript在对象数组中设置所有值

javascript根据属性值从数组中删除所有对象

如何为javascript数组中的所有对象设置值?

获取嵌套数组/对象中的数组中的所有唯一值(删除重复项)

过滤嵌套的对象数组javascript

通过检查带有对象的另一个嵌套数组来过滤带有对象的嵌套数组-JavaScript

根据其值过滤JavaScript深度嵌套的对象数组

检查Julia数组中的所有值?

JavaScript / VueJS:检查数组是否包含对象,该对象的元素具有特定值

在对象数组或对象对象中查找特定键的所有值

返回第一个对象以在 javascript 多级嵌套对象数组中包含特定值

如果嵌套对象具有特定值,则从数组中删除对象

通过检查地图中的匹配值从数组中过滤对象(JavaScript)