在 for 循环中递增 JavaScript 对象中的值

Posted

技术标签:

【中文标题】在 for 循环中递增 JavaScript 对象中的值【英文标题】:Incrementing values in a JavaScript object in a for loop 【发布时间】:2022-01-13 20:26:36 【问题描述】:

要求返回第一个唯一值的特定问题(即在数组中只出现一次的值)。我的方法是创建一个 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 块中。 顺便说一句,您可以使用++ 来增加一个值,因此您不必将整个表达式写两次。 【参考方案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      


【讨论】:

以上是关于在 for 循环中递增 JavaScript 对象中的值的主要内容,如果未能解决你的问题,请参考以下文章

python中for循环怎么从1到4每行递增

在“for”循环中递增 1 时格式化背后的技术原因?

案例方式学习JavaScript双重for循环

在“for”循环中以 1 递增时,是不是有使用 > (<) 而不是 != 的技术原因?

在传递给函数之前,for循环递增到限制

Javascript在for循环中使用值作为对象键?