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

JS 使 forEach 匹配更有效

JS 使 forEach 匹配更有效

翻阅古今 2022-10-08 10:35:19
variants是 objectsselectedOptions的对象,是 option1、option2、option3 的对象。下面forEach通过搜索variants来找到匹配项。是否有更有效的方法,使用数组方法或类似方法来执行以下操作:Object.values(variants).forEach(variant => {    if (variant.options.option1 === selectedOptions.option1 && variant.options.option2 === selectedOptions.option2 && variant.options.option3 === selectedOptions.option3) {        selectedVariant = variant.gid;    }});
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您在这里要做的一件事是遍历所有变体,selectedVariant每次找到匹配项时都会覆盖。如果应该只有一个匹配,当不再需要它时,您仍然会访问所有其他变体。

更有效的是:

selectedVariant = Object.values(variants).find(variant => (
    variant.options.option1 === selectedOptions.option1 && 
    variant.options.option2 === selectedOptions.option2 &&
    variant.options.option3 === selectedOptions.option3
    )).gid;

这样,您在找到匹配项的那一刻就停止了。

老实说,将一个变体设置为等于另一个变体的 gid 看起来是错误的。将分配给的变量命名为selectedVariantGid,或分配整个变体,然后在.gid需要时使用该属性。清晰的命名很重要。


查看完整回答
反对 回复 2022-10-08
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

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