过滤 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);

提前致谢。


紫衣仙女
浏览 167回答 1
1回答

守着星空守着你

您正在寻找some方法:return superhero.group &&&nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items &&&nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items.some(({id}) => id === "1517");或者如果您在 ES5 中需要它:return superhero.group &&&nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items &&&nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items.some(function(item) {&nbsp; &nbsp; &nbsp; &nbsp; return item.id === "1517";&nbsp; &nbsp; &nbsp; &nbsp;});some为数组中的每个条目调用一次回调,并true在回调第一次返回真值时返回,或者false在回调从未返回真值时返回(包括数组中根本没有条目)。也就是说,它检查数组中的“某些”(实际上是“任何”)项是否与回调表示的谓词匹配。这是条件为真和为假时的示例(在 ES2015+ 中):function check(superhero) {&nbsp; &nbsp; return superhero.group &&&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items &&&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;superhero.group.items.some(({id}) => id === "1517");}function test(superhero, expect) {&nbsp; &nbsp; const result = check(superhero);&nbsp; &nbsp; 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))。虚假值是0, "", null, undefined, NaN, 当然还有false。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript