как получить данные о ценах из 2d массива в javascript? - PullRequest
0 голосов
/ 19 января 2020

У меня json, как показано ниже. то, что я пытаюсь сделать, это вычислить сумму цены для каждого пользователя в этом случае, например, user001: 91.68

, где я застрял, я пытаюсь написать для l oop, чтобы получить эти данные из json но я должен назначить прямой номер пользователя (например, user001) для кода. Я хочу использовать это как shoppingJson [i] [j] что-то в этом роде

Я могу получить результат, только когда напишу ниже

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

, как мне поступить, чтобы получить доступ к значениям 2d-массива?

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
      }
    ]}
]

Ответы [ 2 ]

0 голосов
/ 19 января 2020
shoppingJson.forEach(function(obj) {
    var totalPrice = 0;
    for(key in obj) {
        obj[key].forEach(function(o) {
            totalPrice += o.price;
        });
    };
    console.log(totalPrice);
});

Вы можете использовать forEach l oop для перебора каждого из объектов в массиве Json покупки. Затем вы можете создать переменную для хранения общей цены, и она будет инициализирована нулем. Для каждого ключа в объекте вы можете выполнить еще одну итерацию forEach (поскольку значением этого ключа является массив объектов) и добавить значение «price» из этого объекта в переменную totalPrice. Если вы попробуете это на первом объекте в массиве Json покупки, вы получите 91,68.

0 голосов
/ 19 января 2020
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...