22.10.2021, 00:17
|
Аспирант
|
|
Регистрация: 28.02.2014
Сообщений: 36
|
|
Как в jquery просуммировать значения массива с одинаковыми датами
Прошу помочь с получением данных из массива.
Есть массив, к примеру:
Дата, значение1, значение2, Значение3, Значение4
2021-10-21, 1, 1, 1, 1
2021-10-21, 1, 1, 1, 1
2021-10-22, 1, 1, 1, 1
2021-10-22, 1, 1, 1, 1
2021-10-23, 1, 1, 1, 1
Я хочу пройтись циклом по этому массиву выбрать все значения с одинаковыми датами и просуммировать их и вывести полученный результат в HTML.
По итогу должно получиться
2021-10-21, 2, 2, 2, 2
2021-10-22, 2, 2, 2, 2
2021-10-23, 1, 1, 1, 1
Сейчас я получаю сумму всех значений из БД кодом:
$.each(массив, function(index,value) {
for (var i = 0; i < value["active"].length; i++) {
var Дата = value["Дата"];
var Значение1 += value["Значение1"];
var Значение2 += value["Значение2"];
var Значение3 += value["Значение3"];
var Значение4 += value["Значение3"];
}
$(".text").append(
'<td>'+Дата+'</td>'+
'<td>'+Значение1+'</td>'+
'<td>'+Значение2+'</td>'+
'<td>'+Значение3+'</td>'+
'<td>'+Значение4+'</td>'
);
}
Но это выводит каждую дату отдельно и не правильно суммирует значения у строк.
|
|
22.10.2021, 07:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Сообщение от Rorbi
|
Есть массив,
|
можно увидеть этот массив?
|
|
22.10.2021, 07:53
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,202
|
|
Сообщение от Rorbi
|
Дата, значение1, значение2, Значение3, Значение4
2021-10-21, 1, 1, 1, 1
2021-10-21, 1, 1, 1, 1
2021-10-22, 1, 1, 1, 1
2021-10-22, 1, 1, 1, 1
2021-10-23, 1, 1, 1, 1
Я хочу пройтись циклом по этому массиву выбрать все значения с одинаковыми датами и просуммировать их и вывести полученный результат в HTML.
По итогу должно получиться
2021-10-21, 2, 2, 2, 2
2021-10-22, 2, 2, 2, 2
2021-10-23, 1, 1, 1, 1
|
Для итогов используй объект.
Ключом "строки" там будет твоя дата в строковом представлении. А значением ключа будет массив "колонок".
|
|
22.10.2021, 09:02
|
Аспирант
|
|
Регистрация: 28.02.2014
Сообщений: 36
|
|
Сообщение от ksa
|
Для итогов используй объект.
Ключом "строки" там будет твоя дата в строковом представлении. А значением ключа будет массив "колонок".
|
А можете подсказать, как это должно выглядеть по итогу в коде?
Не очень понимаю, что должно получиться
Спасибо.
|
|
22.10.2021, 09:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Сообщение от Rorbi
|
А можете подсказать, как это должно выглядеть по итогу в коде?
Не очень понимаю, что должно получиться
|
массив - то в коде представьте!
|
|
22.10.2021, 10:16
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,202
|
|
Сообщение от Rorbi
|
А можете подсказать, как это должно выглядеть по итогу в коде?
|
Если взять за основу те данные и их структуру, что ты показал выше...
Как вариант
const a = [
['2021-10-21', 1, 1, 1, 1],
['2021-10-21', 1, 1, 1, 1],
['2021-10-22', 1, 1, 1, 1],
['2021-10-22', 1, 1, 1, 1],
['2021-10-23', 1, 1, 1, 1]
]
const rs ={}
a.forEach(el => {
const dt = el[0]
if (rs[dt]) {
rs[dt] = rs[dt].map((e, i) => e + el[i + 1])
} else {
rs[dt] = el.slice(1)
}
})
const tt = []
for (el in rs) {
const txt = el + ', ' + rs[el].toString()
tt.push(txt)
}
alert(tt.join('\n'))
Последний раз редактировалось ksa, 22.10.2021 в 10:26.
|
|
22.10.2021, 10:32
|
Аспирант
|
|
Регистрация: 28.02.2014
Сообщений: 36
|
|
Сообщение от рони
|
массив - то в коде представьте!
|
Массив:
var массив = JSON.parse(data)
//По итогу массив получается если в консоль вывести:
0: ""
1: {id: "1", id2: "1", date: "2021-10-18", значение1: "1", "значение2": "1", "значение3": "1", "значение4": "1"}
2: {id: "2", id2: "1", date: "2021-10-18", значение1: "1", "значение2": "1", "значение3": "1", "значение4": "1"}
3: {id: "3", id2: "1", date: "2021-10-19", значение1: "1", "значение2": "1", "значение3": "1", "значение4": "1"}
|
|
22.10.2021, 10:43
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,202
|
|
Сообщение от Rorbi
|
По итогу массив получается если в консоль вывести
|
По факту это не массив...
Это объект из объектов.
Некоторые ключи вообще пустая строка
0: ""
|
|
22.10.2021, 15:29
|
Аспирант
|
|
Регистрация: 28.02.2014
Сообщений: 36
|
|
Сообщение от ksa
|
По факту это не массив...
Это объект из объектов.
Некоторые ключи вообще пустая строка
0: ""
|
А из-за этого меняется что то в реализации перебора и суммирования значений по дате?
|
|
22.10.2021, 19:36
|
Аспирант
|
|
Регистрация: 28.02.2014
Сообщений: 36
|
|
Сообщение от ksa
|
По факту это не массив...
Это объект из объектов.
Некоторые ключи вообще пустая строка
0: ""
|
Попробовал применить ваш способ, не получилось. Похоже что из разного вида массива/объекта из объектов
|
|
|
|