如何从商品数据对象的variations中查找最低price_excl_vat值
方案1:获取单个商品下所有规格的最低价
如果入参是data数组中的单个商品对象,可直接提取对应层级的价格计算最小值:
priceCalculationCheapest(productObj) { // 提取当前商品所有规格的不含税价格 const priceList = productObj.attributes.variations.map(item => item.price_excl_vat) // 兼容规格为空的情况,无价格时返回null可自行修改默认值 return priceList.length ? Math.min(...priceList) : null }
调用示例:获取第一个商品的最低价,传入你的原始数据.data[0]即可。
方案2:获取所有商品所有规格的全局最低价
如果需要遍历整个data数组,汇总所有商品的所有规格找全局最低价:
getGlobalCheapestPrice(rootData) { // 扁平嵌套结构,提取所有规格的价格 const allPriceList = rootData.data.flatMap(product => product.attributes.variations.map(item => item.price_excl_vat) ) return allPriceList.length ? Math.min(...allPriceList) : null }
扩展:获取最低价对应的完整规格信息
如果需要同时拿到最低价对应的规格名称、描述等完整数据,可以用reduce实现:
getCheapestVariation(productObj) { const variations = productObj.attributes.variations if (!variations.length) return null return variations.reduce((minItem, currentItem) => minItem.price_excl_vat < currentItem.price_excl_vat ? minItem : currentItem ) }
你原有代码的问题在于直接对最外层对象取
Object.values,只能拿到type、id、attributes这类最外层属性值,没有深入到嵌套的variations层级,自然取不到价格数据。
内容的提问来源于stack exchange,提问作者magic bean
相关产品推荐
相关产品推荐

