鉴于以下数据结构,其中product_variations可以将其他product_variations作为子项,我正在寻找一种简洁的算法,将所有'product_variations'作为子项提取到一个'product_variation',但我所拥有的只是SKU
product_variations: [
{
product_variation_id: "",
variation_name: variation_name,
variation_item_name: "test",
sku: "SKU000",
price: price,
stock: stock,
topLevel: true,
child_variations: [{sku: "SKU001"}]
},
]
我认为reduce对此有用,因为我可以迭代每个child_variations,然后使用find函数从product_variations数组中获取相关的SKU并将其推送到累加器。我试图让这样的东西起作用:
const extractChildrenVariations = (variationItem, variations) => {
return variationItem.child_variations.reduce( (arr, {sku: s}) => arr.push(
variations.find( v => v.sku == s)
), [])
}
我认为这可能是问题;有时开始时没有任何child_variations,即。 child_variations: [{}]
任何人都会看到我可能做错了什么?我相信,如果SKU在child_variations数组中,那些与该SKU一起查找的变种会变成一些东西(因为它肯定存在)
答案 0 :(得分:1)
使用array.filter
:
const extractChildrenVariations = (variationItem, variations) => {
return variations.filter(v => variationItem.child_variations.find(cv => cv.sku === v.sku));
}