我需要检查对象数组中的任何对象是否具有type: aAND 是否另一个对象具有type: b我最初是这样做的:const myObjects = objs.filter(attr => attr.type === 'a' || attr.type === 'b');但是代码审查抱怨说filter,当我们只需要知道任何单个对象是否满足任一标准时,它将继续遍历整个数组。我想使用array.find(),但这仅适用于单一条件。for有没有办法在不使用循环的情况下做到这一点?
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
您可以通过以下两个条件
[7,5,11,6,3,19].find(attr => {
return (attr > 100 || attr %2===0);
});
6
[7,5,102,6,3,19].find(attr => {
return (attr > 100 || attr %2===0);
});
102
波斯汪
TA贡献1811条经验 获得超4个赞
更新的答案:
不可能短路 js 的内置函数来做你想做的事,所以你必须使用某种循环:
let a;
let b;
for (const elm of objs) {
if (!a && elm === 'a') {
a = elm;
}
if (!b && elm === 'b') {
b = elm;
}
const done = a && b;
if (done) break;
}
此外,您还应该考虑是否可以记录a以及b在可能的情况下生成阵列。
添加回答
举报
0/150
提交
取消