JavaScript:创建一个返回数组频率分布的函数

标签 javascript arrays object if-statement count

我正在尝试创建一个返回数组频率分布的函数。此函数应返回一个对象,其中键是唯一元素,值是这些元素出现的频率。

我的代码如下:

function getFrequencies(arr) {

  let obj = {}; 

  for (let i=0; i<arr.length; i++){
    let element = arr[i]; 

    console.log(element)

    // check if key exists in object already

    // if it exists, add 1 to the value
    if (obj[element] !== undefined){
      obj[element] += 1;
    }

    // if it does not exist, add 1 to setup future elements
    else {
      obj[element] === 1; 
    }
  }
  return obj
}

getFrequencies(["A", "B", "A", "A", "A"])

我的代码返回:{} 当它应该返回时:

{ A: 4, B: 1 }

我做错了什么?

最佳答案

obj[element] === 1;这是比较运算符,不是赋值。

你想要 obj[element] = 1;

你可以在 ES6+ 中更容易地做到这一点,这是值得的:

arr.reduce((acc, item) => {
  acc[item] = (acc[item] || 0) + 1
  return acc
}, {})

关于JavaScript:创建一个返回数组频率分布的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56827018/

相关文章:

javascript - 为什么不是所有的网络 worker 都用 postMessage 发回数据?

PHP:对数组进行排序

php - 按键值对PHP中对象数组的数组进行排序

java - 在数组中为菜单创建对象

java - 如何在不知道对象名称的情况下使用对象

javascript - 动态加载图像,错误时中断循环

Javascript 闭包 - 父函数

c++ - 我对这个数组代码有问题,它应该输出用户之前输入的所有数字

arrays - 找到最大值并将其他值更改为零

javascript - 从 Promise 中提取 .then 和 .catch