@sodmian

Как сгруппировать вложенные объекты с одинаковыми значениями свойств?

Допустим, имеется объект с повторяющимися свойствами вложенных объектов:
var obj = {
    0: {
        title: 'Дверь',
        color: 'Белая'
    },
    1: {
        title: 'Дверь',
        color: 'Белая'
    },
    2: {
        title: 'Дверь',
        color: 'Черная'
    },
    3: {
        title: 'Дверь',
        color: 'Черная'
    },
    4: {
        title: 'Дверь',
        color: 'Серая'
    }
}

Необходимо на их основе выстроить новый объект такого вида:

var obj = {
    0: {
        title: 'Дверь',
        color: 'Белая',
        count: 2
    },
    1: {
        title: 'Дверь',
        color: 'Черная',
        count: 2
    },
    2: {
        title: 'Дверь',
        color: 'Серая',
        count: 1
    }
}

P.S. Значение свойства "title" может изменяться так же, как и "color".
  • Вопрос задан
  • 396 просмотров
Решения вопроса 1
@KFan
Веб-программист
var obj = [{
        title: 'Дверь',
        color: 'Белая'
	}, {
        title: 'Дверь',
        color: 'Белая'
	}, {
        title: 'Дверь',
        color: 'Черная'
	}, {
        title: 'Дверь',
        color: 'Черная'
	}, {
        title: 'Дверь',
        color: 'Серая'
	}
];

var r_obj = [];

for (var key in obj) {
	var find = false;
	
	for (var key2 in r_obj) {
		if (r_obj[key2].title == obj[key].title &&
			r_obj[key2].color == obj[key].color) {
			r_obj[key2].count++;
			find = true;
		}
	}
	
	if (!find) {
		r_obj.push({
			title: obj[key].title,
			color: obj[key].color,
			count: 1
		});
	}
}

console.log(r_obj);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы