在有和没有大小写的情况下对数组中的相似单词进行计数[关闭]
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);
以上是关于在有和没有大小写的情况下对数组中的相似单词进行计数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在有和没有 ssh 身份验证的情况下将 Git 与两个不同的存储库一起使用?
为 Web API 实施 Azure AD 身份验证,可以在有和没有用户上下文的情况下从多个客户端调用?