У меня есть этот массив данных, и мне нужна его переназначенная версия для итерации по датам.
var objArr = [
{"Country": "US", "2017-07-12": "1", "2017-07-13": "2"},
{"Country": "US", "2017-07-12": "2", "2017-07-13": "2"},
{"Country": "CN", "2017-07-12": "5", "2017-07-13": "7"},
{"Country": "CN", "2017-07-12": "5", "2017-07-13": "7"}
]
- Страны должны суммировать свои значения и не должны появляться дважды во внутреннем массиве.
- В конце я хочу получить массив, подобный этому:
var remapped = [
{"2017-07-12": [
{"Country: "US", "value": 3},
{"Country: "CN", "value": 10}],
{"2017-07-13": [
{"Country: "US", "value": 4},
{"Country: "US", "value": 14}]
]
В моем текущем случае я получаю это, но страны должны быть уменьшены, а значение суммировано:
var remapped = [
{"2017-07-12": [
{"Country: "US", "value": 1},
{"Country: "US", "value": 2},
{"Country: "CN", "value": 5}],
{"Country: "CN", "value": 5}
],
{"2017-07-13": [
{"Country: "US", "value": 2},
{"Country: "US", "value": 2},
{"Country: "US", "value": 7}
{"Country: "US", "value": 7}
]
]
Это то, что я до сих пор. Но для меня это кажется слишком сложным, и я уверен, что есть гораздо более эффективный способ решить это: в этом штате у меня есть страны, переназначенные на даты, но я не уверен, как их «сократить». Мне действительно нужно несколько итераций по массивам?
const res = [];
dateArray.forEach(date => (objArr[date] = [])); // I create an array with dates which could contain another array
objArr.forEach(item => {
dates.forEach(date => {
res[date].push({
Country: item['Country'],
value: item[date],
});
});
});