【问题标题】:how to get price data from 2d array in javascript?如何从javascript中的二维数组获取价格数据?
【发布时间】:2020-05-05 12:52:38
【问题描述】:

我有如下的 json。我要做的是计算每个用户的价格总和 在这种情况下,例如 user001: 91.68

我陷入困境的地方是我正在尝试编写 for 循环以从 json 获取这些数据,但我必须将直接用户编号(例如 user001)分配给代码。 我想使用类似 shoppingJson[i][j] 的东西

我只有在下面写才能得到结果

console.log(shoppingJson[0].user001[0].price)

我应该如何访问二维数组值?

var shoppingJson = [{
    "user001": [
      {
        "productId": "123",
        "name": "Product 123",
        "price": 14.23
      },
      {
        "productId": "456",
        "name": "Product 456",
        "price": 4.56
      },
      {
        "productId": "789",
        "name": "Product 789",
        "price": 72.89
      }
    ]},{
    "user002": [
      {
        "productId": "321",
        "name": "Product 321",
        "price": 3.21
      },
      {
        "productId": "654",
        "name": "Product 654",
        "price": 61.54
      },
      {
        "productId": "987",
        "name": "Product 987",
        "price": 59.87
      }
    ]},{
    "user003": [
      {
        "productId": "777",
        "name": "Product 888",
        "price": 4.213
      },
      {
        "productId": "888",
        "name": "Product 999",
        "price": 6.24
      },
      {
        "productId": "999",
        "name": "Product 111",
        "price": 9.71
      }
    ]}
]

【问题讨论】:

  • 请更新问题以实际显示您正在尝试的内容
  • 看看 map() 和 Object.keys()

标签: javascript arrays sum


【解决方案1】:
shoppingJson.forEach(function(obj) {
    var totalPrice = 0;
    for(key in obj) {
        obj[key].forEach(function(o) {
            totalPrice += o.price;
        });
    };
    console.log(totalPrice);
});

您可以使用 forEach 循环遍历 shoppingJson 数组中的每个对象。然后你可以创建一个变量来存储总价,它将被初始化为零。对于对象中的每个键,您可以进行另一个 forEach 迭代(因为该键的值是对象数组),并将该对象的“价格”值添加到 totalPrice 变量。如果你在 shoppingJson 数组中的第一个对象上尝试这个,你会得到 91.68。

【讨论】:

    【解决方案2】:
    var price = {};
    for(item of shoppingJson){
        for( user in item ){
            price[user] = 0;
            for(product of item[user]){
                price[user] += product.price;
            }
        }
    }
    

    执行此操作后,您将获得对象price 中的总和。然后对象price 将包含以下内容

    {
        user001: 91.68,
        user002: 124.62,
        user003: 20.163
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多