【问题标题】:Incrementing values in a JavaScript object in a for loop在 for 循环中递增 JavaScript 对象中的值
【发布时间】: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


【解决方案1】:

在 if 语句之后,您将 uniqueObj[arr[i]] 重置为 1。当 uniqueObj 没有 arr[i] 的值时,您需要添加一个 else 子句:


if (uniqueObj[arr[i]] !== undefined) {
    uniqueObj[arr[i]] += 1;
} else { // add else block
    uniqueObj[arr[i]] = 1      
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 2012-07-23
    • 2021-07-05
    • 2019-01-17
    • 2011-10-15
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多