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

松仁0

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

我的代码如下:

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;

因此您的代码实际上永远不会初始化任何键 obj

function getFrequencies(arr) {
  let obj = {};
  for (let i = 0; i < arr.length; i++) {
    let element = arr[i];
    if (obj[element] !== undefined) {
      obj[element] += 1;
      console.log(obj, 'in if')
    }
    else {
      obj[element] === 1;
      console.log(obj, 'in else')
    }
  }
  return obj
}

console.log(getFrequencies(["A", "B", "A", "A", "A"]));

您可以简单地使用 reduce

function getFrequencies(arr) {
  return arr.reduce((op, inp) => {
    op[inp] = op[inp] || 0
    op[inp]++
    return op
  },{})
}

console.log(getFrequencies(["A", "B", "A", "A", "A"]));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript:函数返回一个对象

在一个函数中创建一个数组,然后在另一个函数中读取它而没有返回语句

创建一个返回数组的方法

创建一个按钮数组Javascript

在函数中创建一个数组并将其返回给main()

Swift:我需要为函数返回创建一个新的不可变数组吗?

Javascript数组仅运行函数,该函数在数组的一个元素上返回promise

JavaScript:创建函数,该函数返回一个返回具有getter / setter功能的输出的函数

创建一个函数以转换数组元素的类型并返回数组的地址

如何创建一个返回数组中飞旋镖总数的函数

创建一个函数以返回C中int数组的长度

如何创建一个熊猫数据帧以编码NLTK频率分布

c ++函数创建一个二维数组并返回一个指向二维数组的指针

我必须创建一个函数,该函数返回传入的数组的最后一个元素

Django 创建一个“返回”函数

创建一个函数来接受一个二维数组并返回一个显示所有键:值的对象

创建一个函数来返回一列

创建一个返回随机整数但具有指定分布/“权重”的 Javascript 函数

创建一个多维数组javascript

JavaScript:创建函数,该函数使用回调返回一个对象,该对象的键与值数组中的元素匹配

在 ruby 中为 Array 类创建了一个 pow 函数,但不返回数组

一个函数来计算一个元素的出现次数或频率并返回一个对象,但删除出现一个的元素并返回其余的元素

Javascript:函数返回数组的最后一个元素

JavaScript:如何创建一个函数来接收一个数字数组并返回一个只包含正数的数组?

找到一个多数组的频率

如何创建一个接受两个参数(numRows、numColumns)并返回具有正确网格值的二维数组的 JavaScript 函数?

从 Javascript 函数创建一个点赞数组

如何使用 numpy 创建一个从数据数组返回二维值的函数?

即使我从我的 javascript 函数返回一个数组,我也得到一个对象