猿问

如何在两个条件下使用 Javascript array.find()?

我需要检查对象数组中的任何对象是否具有type: aAND 是否另一个对象具有type: b

我最初是这样做的:

const myObjects = objs.filter(attr => attr.type === 'a' || attr.type === 'b');

但是代码审查抱怨说filter,当我们只需要知道任何单个对象是否满足任一标准时,它将继续遍历整个数组。

我想使用array.find(),但这仅适用于单一条件。

for有没有办法在不使用循环的情况下做到这一点?


MYYA
浏览 231回答 2
2回答

富国沪深

您可以通过以下两个条件[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

波斯汪

更新的答案:不可能短路 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在可能的情况下生成阵列。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答