gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:34:27 25 4
gpt4 key购买 nike

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

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

// 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 为数组中的每个条目调用一次回调,并在回调第一次返回 truthy¹ 值时返回 true,或者返回 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);


¹“真实值”-“真实”值是任何不“虚假”的值。 falsy 值是当用作条件(例如 if (x))时评估为 false 的值。伪值是 0""nullundefinedNaN、当然,false

关于javascript - 过滤 Javascript 数组以检查所有嵌套对象中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58545559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com