Задать вопрос
@babai19

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

Есть 2 массива с объектами, у объектов есть значение id. Так вот: нужно пройтись по первому массиву и у объектов, которые так же имеются во втором массиве (можно проверять по id), изменить значение конкретного поля на true. Как такое реализовать?
p.s. можно использовать библиотеки
p.p.s. решение использовать только с оговорками относительно обхода массива
  • Вопрос задан
  • 2431 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
var one = [{id: '1'}, {id: '2'}],
	two = [{id: '2'}, {id: '5'}],
	twoIds = [];

for ( i in two ) {
	if ( two.hasOwnProperty(i) ) {
		twoIds[two[i].id] = 1;
	}
}

for (i in one) {
	if ( one.hasOwnProperty(i) ) {
		if ( twoIds[one[i].id] !== undefined ) {
			one[i].field = true;
		}
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@M-ka
frontend присматривающийся к ror
Обход первого(или второго) масива, постройка объекта с ключами в виде ай ди.
При обходе другого масива проводить все действия сравнения и необходимые действия с новым объектом... Измененный объект запихнуть в масив с длинной в 1 или побить по ключах или как.... ну вообщем под нужную структуру...
Итого сделать функцию конвертации масива в ассоциативный, ну а второй производить сравнение объектов с возвратом общих ключей. Сравнение через поочередный обход обоих объектов и вынесением найденных ключей, которые находятся в другом объекте. Результат вернуть...
А вообще по хорошему следовало бы избавиться от масивов изначально, сделав ассоциативные масивы...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы