#javascript #arrays #algorithm #data-structures #hashtable
#язык JavaScript #массивы #алгоритм #структуры данных #хэш-таблица
Вопрос:
Конкретная проблема требует возврата первого уникального значения (т. Е. Значения, которое появляется только один раз в массиве). Мой подход состоял в том, чтобы создать объект с ключами в качестве элементов массива и значениями в качестве счетчика того, сколько раз было просмотрено каждое значение.
function solution(arr) { let uniqueObj = {} for (let i=0; ilt;arr.length; i ){ if(uniqueObj[arr[i]] !== undefined){ uniqueObj[arr[i]] = uniqueObj[arr[i]] 1 } uniqueObj[arr[i]] = 1 } console.log(uniqueObj) } solution([4,10,5,4,2,10]) //output { '2': 1, '4': 1, '5': 1, '10': 1 }
почему значение не увеличивается каждый раз, когда отображается один и тот же ключ?
Комментарии:
1. Вы сбрасываете его до 1 с помощью uniqueObj[arr[i]] = 1
2. Эта строка должна быть в
else
блоке.3. Кстати, вы можете использовать
для увеличения значения, так что вам не придется писать все выражение дважды.
Ответ №1:
После вашего заявления if вы uniqueObj[arr[i]]
возвращаетесь к 1. Вам нужно добавить предложение else для when uniqueObj
, которое не имеет значения в arr[i]
:
if (uniqueObj[arr[i]] !== undefined) { uniqueObj[arr[i]] = 1; } else { // add else block uniqueObj[arr[i]] = 1 }