variants
是对象的对象,selectedOptions
是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;
}
});
[您要做的一件事是遍历所有变体,每次找到匹配项时都会覆盖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
属性。明确的命名很重要。