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
需要时使用该属性。清晰的命名很重要。
添加回答
举报
0/150
提交
取消