首页 > 解决方案 > 将嵌套数组中的 2 个值相乘然后推送到一个新数组 - JavaScript Vue

问题描述

我有一个数组,我试图将两个值相乘,qtypackageQuantity创建一个新数组,并将结果集设置为units键。

问题是我有一个复杂的嵌套数组,无法锻炼如何创建一个新数组!

我已经弄清楚如何进行乘法运算,但是我不知道如何将值推送到新数组。

我正在使用 Vue,如果可能的话,我想实时更改这些值。

如何进行乘法运算,创建一个新数组,将结果放入单位键中?

为了澄清,我想创建一个新数组,将新结果放入其中,同时添加旧值。见下文。

提前非常感谢!

这是我当前的数组:

data: () => ({
sites: [

  {
    sku: "10001",
    values: [
      {
        variationName: { name: "Unpackaged", qty: 1 },
        units: '',
        packageQuantity: '2'
      }
    ]
  },
  {
    sku: "10002",
    values: [
      {
        variationName: { name: "2 Pack", qty: 2 },
        units: '',
        packageQuantity: '3'
      },
      {
        variationName: { name: "4 Pack", qty: 4 },
        units: '',
        packageQuantity: '1'
      }
    ]
  }
    ]
})

这是我想要的输出:

sites: [

  {
    sku: "10001",
    values: [
      {
        variationName: { name: "Unpackaged", qty: 1 },
        units: '2', // 1 * 2
        packageQuantity: '2'
      }
    ]
  },
  {
    sku: "10002",
    values: [
      {
        variationName: { name: "2 Pack", qty: 2 },
        units: '6', // 2 * 3
        packageQuantity: '3'
      },
      {
        variationName: { name: "4 Pack", qty: 4 },
        units: '4', // 1 * 4
        packageQuantity: '1'
      }
    ]
  }
    ]

这是我的计算:

 sites.forEach(
  (innerArray) => innerArray.values.forEach(
   (item => console.log(item.variationName.qty * item.units))
  )
 )

标签: javascriptarraysnode.jsvue.jsvuejs2

解决方案


           let newData=[]; 
            let sites = [

                {
                    sku: "10001",
                    values: [{
                        variationName: {
                            name: "Unpackaged",
                            qty: 1
                        },
                        units: '',
                        packageQuantity: '2'
                    }]
                },
                {
                    sku: "10002",
                    values: [{
                            variationName: {
                                name: "2 Pack",
                                qty: 2
                            },
                            units: '',
                            packageQuantity: '3'
                        },
                        {
                            variationName: {
                                name: "4 Pack",
                                qty: 4
                            },
                            units: '',
                            packageQuantity: '1'
                        }
                    ]
                }
            ]
            for (let i = 0; i < sites.length; i++) {
                let iData = sites[i].values;
                for (let j = 0; j < iData.length; j++) {
                    iData[j].units = parseInt(iData[j].packageQuantity) * parseInt(iData[j].variationName.qty);
                }

            }
             newData.push(sites);

输出

    newData: [
            {
                sku: "10001",
                values: [{
                    variationName: {
                        name: "Unpackaged",
                        qty: 1
                    },
                    units: 2, 
                    packageQuantity: '2'
                }]
            },
            {
                sku: "10002",
                values: [{
                        variationName: {
                            name: "2 Pack",
                            qty: 2
                        },
                        units: 6,
                        packageQuantity: '3'
                    },
                    {
                        variationName: {
                            name: "4 Pack",
                            qty: 4
                        },
                        units: 4, 
                        packageQuantity: '1'
                    }
                ]
            }
        ]

推荐阅读