计算 JavaScript 中数组中元素的频率

Counting the frequency of elements in an array in JavaScript

本文关键字:频率 元素 数组 JavaScript 计算      更新时间:2023-09-26

如何计算数组中元素的频率,我是Javascript的新手并且完全迷失了,我在这里查看了其他答案,但无法让它们为我工作。任何帮助都非常感谢。

function getText() {
    var userText;
    userText = document.InputForm.MyTextBox.value; //get text as string
    alphaOnly(userText);
}
function alphaOnly(userText) {
    var nuText = userText;
    //result = nuText.split("");
    var alphaCheck = /[a-zA-Z]/g; //using RegExp create variable to have only      alphabetic characters
    var alphaResult = nuText.match(alphaCheck); //get object with only alphabetic matches from  original string
    alphaResult.sort();
    var result = freqLet(alphaResult);
    document.write(countlist);
}

function freqLet(alphaResult) {
    count = 0;
    countlist = {
        alphaResult: count
    };
    for (i = 0; i < alphaResult.length; i++) {
        if (alphaResult[i] in alphaResult)
            count[i] ++;
    }
    return countlist;
}

要计算频率,您应该使用一个对象,该对象的属性对应于输入字符串中出现的字母。此外,在增加属性的值之前,您应该事先检查此属性是否存在。

function freqLet (alphaResult) {
  var count = {};
  countlist = {alphaResult:count};
  for (i = 0; i < alphaResult.length; i++) {
    var character = alphaResult.charAt(i);
    if (count[character]) {
       count[character]++;
    } else {
       count[character] = 1;
    }
  }
  return countlist;
}

如果你可以使用第三方库,underscore.js提供了一个函数"countBy",它几乎完全符合你想要的。

_.countBy(userText, function(character) {
  return character;
});

这应该返回映射到计数的集合中的字符关联数组。

然后,您可以使用下划线或任何您喜欢的方法将该对象的键过滤到您需要的有限字符集。

按以下步骤操作:

var __arr = [6,7,1,2,3,3,4,5,5,5]
function __freq(__arr){
    var a = [], b = [], prev 
    __arr.sort((a,b)=>{return a- b} )
for(let i = 0; i<__arr.length; i++){
    if(__arr[i] !== prev){
        a.push(__arr[i])
        b.push(1)
    }else{
        b[b.length - 1]++
    }
    prev = __arr[i]
}
return [a , b]
}