首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript Array.prototype.reduce --销毁可能不存在的属性

JavaScript Array.prototype.reduce --销毁可能不存在的属性
EN

Stack Overflow用户
提问于 2018-04-03 07:00:19
回答 1查看 49关注 0票数 1

考虑到下面的数据结构,product_variations可以有其他的product_variations作为子级,我正在寻找一种简洁的算法,它将提取所有的“product_variations”,这些'product_variations‘都是一个“product_variations”,但是我所拥有的只是SKU。

代码语言:javascript
复制
  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"}]
        },  
    ]  

我当时认为,减少可能对此有用,因为我可以遍历每个child_variations,然后使用一个find函数从product_variations数组中获取相关的SKU并将其推送到累加器。我正试着让这样的东西发挥作用:

代码语言:javascript
复制
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的variations.find会打开一些东西(因为它确实存在)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 07:14:30

它可以使用array.filter更易读。

代码语言:javascript
复制
const extractChildrenVariations = (variationItem, variations) => {
    return variations.filter(v => variationItem.child_variations.find(cv => cv.sku === v.sku));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49624065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档