猿问

JS 使 forEach 匹配更有效

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;

    }

});


翻阅古今
浏览 132回答 1
1回答

汪汪一只猫

您在这里要做的一件事是遍历所有变体,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需要时使用该属性。清晰的命名很重要。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答