Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сгруппировать массив (https://javascript.ru/forum/dom-window/76158-sgruppirovat-massiv.html)

user_001 10.12.2018 11:56

Сгруппировать массив
 
Добрый день. Имеется массив данных

data = [
{
	balance: 100
	hash: "hello"
},
{
	balance: 10
	hash: "hello"
},
{
	balance: 99
	hash: "hello2"
},
{
	balance: 5
	hash: "hello3"
},
{
	balance: 1
	hash: "hello3"
},
]


Как получить такой результат

data2 = [
{
	name:"hello",
	totalBalance:сумма всех balance c hash hello
	data:{

		balance: 100
		hash: "hello"
	},
	{
		balance: 10
		hash: "hello"
	},
},
{
	name:"hello2",
	totalBalance:сумма всех balance c hash hello2
	data:{

		balance: 100
		hash: "99"
	},
},

{
	name:"hello3",
	totalBalance:сумма всех balance c hash hello3
	data:{

		balance: 5
		hash: "hello3"
	},
	{
		balance: 1
		hash: "hello3"
	},
}
]

Alexandroppolus 10.12.2018 12:15

function groupping(arr) {
    var result = [], map = Object.create(null);
	arr.forEach(function(item) {
		var group = map[item.hash];
		if (!group) {
        	group = map[item.hash] = {name: item.hash, totalBalance: 0, data: []};
			result.push(group);
		}
		group.totalBalance += item.balance;
		group.data.push(item);
    });
	return result;
}

user_001 10.12.2018 13:16

Спасибо больше. Работает!


Часовой пояс GMT +3, время: 09:23.