在 for/if 循环中添加新键并更改值

Posted

技术标签:

【中文标题】在 for/if 循环中添加新键并更改值【英文标题】:Appending new keys, and changing values in for/if loop 【发布时间】:2021-11-01 06:53:24 【问题描述】:

我当前的目标是获取数组整数中的项目,并根据键在整数中出现的次数创建一个键对值。我的逻辑是:对于整数中的 i,如果 i 已经是整数 2,则将该键的值增加 1。如果它不存在,则创建该键并将其与值 1 配对。现在已经有几个小时了经过大量的谷歌搜索后,我似乎无法找到我的逻辑混乱的地方。

//require realdine-sync module
var readlineSync = require('readline-sync');
//initialize variable and list
var integer;
integers2 = ;
var integers = [];
//user input
integer = readlineSync.question('Integer?: ')
//check user input and append any integer besides 0
while (integer != 0 && integer >= 1 && integer <= 100)
console.log("not 0!")
integers.push(integer)
integer = readlineSync.question('Integer?: ')

console.log(integers);
for(i in integers)if (i in integers2)integers2[i] += 1elseintegers2[i] = 1
   

console.log(integers2)

【问题讨论】:

只是我的运气,在发布了这个问题后,我终于偶然发现了一些让我感动的东西。 ``` if (key in object) object[key]++; 其他 对象 [键] = 1; ``` 【参考方案1】:

let integers2 = 

integers = [5, 4, 5, 2, 4, 7, 5];

// you were using 'in' instead 'of', 'in': gives you index , 'of'?: gives you value of array
for (let i of integers) 
    if (integers2[i])  // if key exist increment value by one
        integers2[i] += 1
     else  // else add 1 as the first value
        integers2[i] = 1
    

console.log(integers2);

【讨论】:

【参考方案2】:

这是一个您可以尝试的解决方案。它使用与您在问题中描述的逻辑相同的逻辑。此解决方案使用 Array.prototype.reduce()Map()

const howMany = arr => arr
  .reduce(
    (map, n) => map.set(n, (map.get(n) ?? 0) + 1), 
    new Map()
  )

console.log([...howMany([3, 4, 6, 4, 5, 5, 5])])

【讨论】:

以上是关于在 for/if 循环中添加新键并更改值的主要内容,如果未能解决你的问题,请参考以下文章

如何向字典添加新键?

Python:创建后冻结字典键[重复]

将新键添加到对象时如何重新渲染 v-for

vanilla javascript:拦截输入键并更改键值

循环使用变量,使用特定步长更改每个循环计算

python语法学习第六天--字典