Задать вопрос
evgeniy8705
@evgeniy8705
Повелитель вселенной

Как понять момент решения задачи на JS?

Опять не очень понятный момент в решении задачи на JS.
Задача :
Пусть strings — массив строк.
Напишите функцию unique(strings), которая возвращает массив, содержащий только уникальные элементы arr.

Решение:
function enique(arr) {
	var obj = {};

	for (var i = 0; i < arr.length; i++) {
		var str = arr[i];
		obj[str] = true;
	}

	return Object.keys(obj);
}

var strings = [1, 1, 1, 1, 1, 2, 3, 4, 5, 4, 4, 4, 4];

console.log( enique(strings) );


Так вот не очень понятна вот эта строка obj[str] = true; Объясните пожалуйста.
  • Вопрос задан
  • 2424 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Создается ассоциативный массив, ключами в котором являются строки. Так как ключи в таком массиве уникальны, когда в исходных данных встречается повторная строка, новый элемент массива obj не создается, а просто переписывается ранее созданный. Итог работы подпрограммы - массив ключей массива obj, которые и являются уникальными строками.
Ответ написан
Комментировать
strings.reduce(function(p, v) {
  if (-1 === p.indexOf(v)) {
    p.push(v); 
  } 
  return p; 
}, []);
Ответ написан
maaGames
@maaGames
Погроммирую программы
Программист не умеет в Set, поэтому использует ассоциативный контейнер.
Ответ написан
Ваш ответ на вопрос

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

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