Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.10.2021, 00:17
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 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>'
    );
}

Но это выводит каждую дату отдельно и не правильно суммирует значения у строк.
Ответить с цитированием
  #2 (permalink)  
Старый 22.10.2021, 07:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Rorbi
Есть массив,
можно увидеть этот массив?
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2021, 07:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 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
Для итогов используй объект.
Ключом "строки" там будет твоя дата в строковом представлении. А значением ключа будет массив "колонок".
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2021, 09:02
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от ksa Посмотреть сообщение
Для итогов используй объект.
Ключом "строки" там будет твоя дата в строковом представлении. А значением ключа будет массив "колонок".
А можете подсказать, как это должно выглядеть по итогу в коде?
Не очень понимаю, что должно получиться

Спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 22.10.2021, 09:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Rorbi
А можете подсказать, как это должно выглядеть по итогу в коде?
Не очень понимаю, что должно получиться
массив - то в коде представьте!
Ответить с цитированием
  #6 (permalink)  
Старый 22.10.2021, 10:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 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.
Ответить с цитированием
  #7 (permalink)  
Старый 22.10.2021, 10:32
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 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"}
Ответить с цитированием
  #8 (permalink)  
Старый 22.10.2021, 10:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от Rorbi
По итогу массив получается если в консоль вывести
По факту это не массив...
Это объект из объектов.

Некоторые ключи вообще пустая строка
0: ""
Ответить с цитированием
  #9 (permalink)  
Старый 22.10.2021, 15:29
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от ksa Посмотреть сообщение
По факту это не массив...
Это объект из объектов.

Некоторые ключи вообще пустая строка
0: ""
А из-за этого меняется что то в реализации перебора и суммирования значений по дате?
Ответить с цитированием
  #10 (permalink)  
Старый 22.10.2021, 19:36
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от ksa Посмотреть сообщение
По факту это не массив...
Это объект из объектов.

Некоторые ключи вообще пустая строка
0: ""

Попробовал применить ваш способ, не получилось. Похоже что из разного вида массива/объекта из объектов
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как улучшить сортировку массива? Armen Общие вопросы Javascript 3 12.10.2014 20:17
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как динамически создавать поля и записать значения с массива ? Sergios90 Общие вопросы Javascript 7 19.11.2013 18:34
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53