Обработка массива обьектов

239
26 апреля 2018, 10:05

Как можно обработать массив обьектов, чтобы суммировать все поля сost (из Detail) со статусами true при совпадении свойства country? Спасибо!

let arr = [
  {
    "Company": "ААА",
    "Country": "USA",
    "Detail": [{
      "number": "256",
      "cost": 170,
      "status": false,
    }, {
      "number": "345",
      "cost": 720,
      "status": true,
    }, {
      "number": "569",
      "cost": 702,
      "status": false,
    }],
    "orderID": "564"
  },
  {
    "Company": "BBB",
    "Country": "CANADA",
    "Detail": [{
      "number": "589",
      "cost": 40,
      "status": true,
    }, {
      "number": "354",
      "cost": 90,
      "status": true,
    }, {
      "number": "478",
      "cost": 780,
      "status": true,
    }],
    "orderID": "594"
  },
  {
    "Company": "AAA",
    "Country": "USA",
    "Detail": [{
      "number": "154",
      "cost": 140,
      "status": true,
    }, {
      "number": "148",
      "cost": 920,
      "status": false,
    }, {
      "number": "954",
      "cost": 680,
      "status": true,
    }],
    "orderID": "514"
  }
]
Answer 1

let arr = [{ 
    "Company": "ААА", 
    "Country": "USA", 
    "Detail": [{ 
      "number": "256", 
      "cost": 170, 
      "status": false, 
    }, { 
      "number": "345", 
      "cost": 720, 
      "status": true, 
    }, { 
      "number": "569", 
      "cost": 702, 
      "status": false, 
    }], 
    "orderID": "564" 
  },{ 
    "Company": "BBB", 
    "Country": "CANADA", 
    "Detail": [{ 
      "number": "589", 
      "cost": 40, 
      "status": true, 
    }, { 
      "number": "354", 
      "cost": 90, 
      "status": true, 
    }, { 
      "number": "478", 
      "cost": 780, 
      "status": true, 
    }], 
    "orderID": "594" 
  },{ 
    "Company": "AAA", 
    "Country": "USA", 
    "Detail": [{ 
      "number": "154", 
      "cost": 140, 
      "status": true, 
    }, { 
      "number": "148", 
      "cost": 920, 
      "status": false, 
    }, { 
      "number": "954", 
      "cost": 680, 
      "status": true, 
    }], 
    "orderID": "514" 
  } 
]; 
 
 
console.log( 
  arr 
    .filter(el => el.Country === 'USA') 
    .reduce((sum, el) =>  
      sum + el.Detail.reduce((dsum, detail) =>  
        dsum + (+detail.status) * detail.cost 
      ,0)  
    ,0) 
);

READ ALSO
Простое регулярное выражение на javascript [требует правки]

Простое регулярное выражение на javascript [требует правки]

Можно, пожалуйста, пример регулярки на js, jQuery, например, для текста [A-Za-z]+На php это очень легко делать, а с js что-то не как не поймиу что куда (

165
Проблема определением наличия слова

Проблема определением наличия слова

Есть переменная val с содержимым 285 кривой или ровный %Как определить имеется ли слово в переменной val?

219
кластеризация маркеров в GoogleMap

кластеризация маркеров в GoogleMap

Не понимаю как реализовать кластеризацию маркеров в данном случаеПомогите исправить ошибки и правильно реализовать эту функцию

188
Как правильно произвести замену img на svg?

Как правильно произвести замену img на svg?

Есть изображение img svg, которое вставлено на страницу с помощью тега img

201