[4, 10, 5, 4, 2, 10]
배열이 주어졌을 때,
중복되어 나온 숫자를 제외하고, 가장 첫 번째 숫자를 반환하는 문제이다.
예시에서는 4, 10이 중복된 숫자고, 한 번만 나온 unique 숫자는 5, 2인데
그 중 첫번째인 5를 반환하면 된다.
처음에는 obj 객체를 만들어 값들이 몇 번 나왔는지를 체크했는데,
값이 이미 obj객체에 있을 경우, value값은 아무 값이나 저장하면 된다.
필요한 것은 1번만 나온 값이기 때문이다.
function solution(A) {
const obj = {};
for (let i = 0; i < A.length; i++) {
obj[A[i]] = A[i] in obj ? [0, 0] : [1, i, A[i]];
}
const unique = Object.values(obj).filter(v => v[0] === 1);
if (unique.length === 0) return -1;
return unique.sort((a, b) => a[1] - b[1])[0][2];
}