【发布时间】:2023-03-27 16:41:02
【问题描述】:
要求返回第一个唯一值的特定问题(即在数组中只出现一次的值)。我的方法是创建一个 obj,其中键作为数组中的元素,值作为每个值出现次数的计数器。
function solution(arr) {
let uniqueObj = {}
for (let i=0; i<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 }
为什么每次看到相同的键时值都不会增加?
【问题讨论】:
-
您正在使用 uniqueObj[arr[i]] = 1 将其重置为 1
-
该行应该在
else块中。 -
顺便说一句,您可以使用
++来增加一个值,因此您不必将整个表达式写两次。
标签: javascript arrays algorithm data-structures hashtable