【问题标题】:Update an Array total property with multiplying the properties通过将属性相乘来更新数组总属性
【发布时间】:2020-08-26 11:19:45
【问题描述】:

所以我有一个数组,我想通过将值乘以 qty 来更改总数(我将其更改为英文),我终于想出了如何获得总数。现在我一直在更新正确属性中的总数。

我认为是一个循环或其他东西,但它对我来说还没有意义,我如何清楚地说明它应该用正确的价值和数量之和更新正确的属性。

我稍后会制作它,以便您可以在表单中更改它并添加到它,但这是更进一步的步骤。我一直在看 Array Map 和 ForEach 来改变它。但是我有点卡住了

预期的输出是:

{omschrijving:"Brood", value:1, qty:3, total:3},

{omschrijving:"Brocolli", value:0.99, qty:2, total:1.98},

{omschrijving:"Krentenbollen", value:1.20, qty:4, total:4.80},

{omschrijving:"Noten", value:2.99, qty:2, total:5.98}

我也意识到我的 forEach 输出 5 个数字? :O

我还从属性中删除了我的手动总计,因为我想更改它。

现在它给出了一个错误:)所以我再次填写手册。

    let product =  [
{omschrijving:"Brood", value:1, qty:3, total:},
{omschrijving:"Brocolli", value:0.99, qty:2, total:},
{omschrijving:"Krentenbollen", value:1.20, qty:4, total:},
{omschrijving:"Noten", value:2.99, qty:2, total:}
]



product.forEach(function (arrayItem) {
    var x = arrayItem.value * arrayItem.qty;
    console.log(x);
});

【问题讨论】:

  • 预期输出是什么?
  • 预期输出将是(我编辑帖子还好,这里看起来很糟糕)但是具体产品的总数。据我了解,最好映射一个新数组然后更改现有数组?
  • 我添加了使用 for 循环和 forEach 的解决方案(你正在尝试什么)
  • 谢谢!推荐哪种方式?我听说 For 循环更好用,因为资源更少
  • 这里有一些很好的链接来理解它alligator.io/js/foreach-vs-for-loops

标签: javascript arrays properties updating


【解决方案1】:

这是一个使用简单 for 循环的解决方案

let product =  [
{omschrijving:"Brood", value:1, qty:3},
{omschrijving:"Brocolli", value:0.99, qty:2},
{omschrijving:"Krentenbollen", value:1.20, qty:4},
{omschrijving:"Noten", value:2.99, qty:2}
]

for(let i=0;i<product.length;i++)
{
  product[i].total = product[i].value*product[i].qty;
}
console.log(product);

使用 forEach 方法

let product =  [
    {omschrijving:"Brood", value:1, qty:3},
    {omschrijving:"Brocolli", value:0.99, qty:2},
    {omschrijving:"Krentenbollen", value:1.20, qty:4},
    {omschrijving:"Noten", value:2.99, qty:2}
    ]

product.forEach(function (arrayItem) {
        arrayItem.total = arrayItem.value * arrayItem.qty;
    });
console.log(product);

使用 .map 方法

let product =  [
    {omschrijving:"Brood", value:1, qty:3},
    {omschrijving:"Brocolli", value:0.99, qty:2},
    {omschrijving:"Krentenbollen", value:1.20, qty:4},
    {omschrijving:"Noten", value:2.99, qty:2}
    ]

product.map(pro => 
   {pro.total = pro.value * pro.qty;
   return pro;
   }
)
console.log(product);

【讨论】:

  • 谢谢这么简单(我一直在尝试类似的东西:D我只是听说更新数组并不聪明?但没有解释(教程中的一句话),这是真的吗?我应该使用地图? 现在我要让它动态和可更新:D
  • 如果您不想改变现有数组,您也可以使用 map 。 map 返回一个新数组,而 forEach 中提供的回调函数将改变现有数组。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
相关资源
最近更新 更多