在有和没有大小写的情况下对数组中的相似单词进行计数[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在有和没有大小写的情况下对数组中的相似单词进行计数[关闭]相关的知识,希望对你有一定的参考价值。

我有一个充满单词的数组,我需要计算用户选择是否忽略大小写对相似单词进行排序的相似单词

function parseText(text,letterCase,punc) 
    var words = text
        .replace(/[.,\/#!$%\^&\*;:=\-_`~()]/g, '')
        .split(/\s/); //split the array and remove punctualitis

    words.forEach(function(w) 
        if (!Sub_Word[w]) 
            Sub_Word[w] = 0;
        

        Sub_Word[w]+=1;//creating an array and the word and how much it was there
    );

    return Sub_Word;

现在此代码有效,但在某些情况下不起作用,例如此数组["he","He","hello"]

我需要它来返回[["he:2"],[hello:1]]

答案

使用array.reduce:

var words = ["he","He","hello"];
var res = words.reduce((m, o) => 
  o = o.toLowerCase();
  var found = m.find(e => e[0] === o);
  found ? found[1]++ : m.push([o, 1]);
  return m;
, []);
console.log(res);
另一答案

您可以使用Array.reduce()Object.entries()

let arr = ["he","He","hello"];
let lettercase = true;
let result = Object.entries(arr.reduce((a,curr)=>
  let key = lettercase ? curr.toLowerCase() : curr;
  a[key] = a[key] || 0;
  a[key]++;
  return a;
,));

console.log(result);

以上是关于在有和没有大小写的情况下对数组中的相似单词进行计数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在有和没有用户上下文的情况下调用 REST API

如何在有和没有 ssh 身份验证的情况下将 Git 与两个不同的存储库一起使用?

为 Web API 实施 Azure AD 身份验证,可以在有和没有用户上下文的情况下从多个客户端调用?

如何使用ajax创建数组并在没有回调函数的情况下对其进行修改?

我可以在没有递归和堆栈的情况下对二叉树进行顺序遍历吗?

在不循环 c++ 的情况下对 2D 数组进行分区