为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2022-07-15 10:29:54
我需要检查对象数组中的任何对象是否具有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


查看完整回答
反对 回复 2022-07-15
?
波斯汪

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在可能的情况下生成阵列。


查看完整回答
反对 回复 2022-07-15
  • 2 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信