Javascript 如何选择和显示最常用的字符串

Javascript 如何选择和显示最常用的字符串,javascript,counting,Javascript,Counting,为了科学的目的,我创建了一个新的应用程序来比较交换办公室 我需要从JSON文本中选择最常用的值(欧元、瑞士法郎、瑞典克朗、美元、英镑),并将其显示为其中一个值(欧元、弗兰克、科罗纳、多拉、富特) 当前,将显示最常用货币的使用次数。您可以使用映射表和reduce方法 const text=“瑞士法郎€”; const mappingTable={“€”:“欧元”、“瑞士法郎”:“弗兰克”}; 设MaxOccurrenceCount=0; const mostFrequentKey=Object.

为了科学的目的,我创建了一个新的应用程序来比较交换办公室

我需要从JSON文本中选择最常用的值(欧元、瑞士法郎、瑞典克朗、美元、英镑),并将其显示为其中一个值(欧元、弗兰克、科罗纳、多拉、富特)


当前,将显示最常用货币的使用次数。

您可以使用映射表和reduce方法

const text=“瑞士法郎€”;
const mappingTable={“€”:“欧元”、“瑞士法郎”:“弗兰克”};
设MaxOccurrenceCount=0;
const mostFrequentKey=Object.keys(映射表).reduce((bestKeySoFar,currentKey)=>{
const currentOccurenceCount=text.split(currentKey).length-1;
如果(CurrentOccurrenceCount>MaxOccurrenceCount){
MaxOccurnceCount=CurrentOccurnceCount;
返回当前键;
}
返回最佳值;
},映射表[0]);

log(mappingTable[mostFrequentKey])
应该注意的是,您的JSON字符串可能有一个内置的结构,这将使它比使用极其缓慢的
split()
解析性能更好

然而,由于我不知道这种结构是什么,我将使用您选择的方法

您可以使用类似于以下代码的代码,它将创建一个货币数组并返回一个对象数组。每个对象都将有一个
currency
属性和一个
count
属性。然后可以通过
count
属性按降序排列数组,这样数组中的第一项将等于或大于所有其他项

这里的优点是,您可以获得所有货币的计数,如果您有两种或更多货币之间的平局,这可能会很有用,以获得最大的代表性

const text=`{“values”:[''123','CHF123','CHF456','SEK123','$123','123']};
常量货币=[“欧元”、“瑞士法郎”、“瑞典克朗”、“美元”、“英镑];
常量计数=货币
.地图(
货币=>
({
货币,
计数:text.split(货币)。长度-1,
})
)
.分类(
(l,r)=>
r、 计数-l.计数
);

控制台日志(计数)创建带有翻译符号的对象文字。
您可以使用
String.prototype.match()
来计算字符串中的出现次数

const symb={'€':'EURO','CHF':'FRANK','SEK':'KORONA','$':'DOLAR','FUNT',};
函数countExc(文本){
const obj=JSON.parse(text),res={};
for(k in obj)res[symb[k]=(obj[k].match(newregexp(`\\${k}`,'g'))| |[])。长度;
返回res;
}

log(countExc(`{“CHF”:“1CHF 2CHF”、“€”:“100欧元”、“$”:“1$2$4$”}`)obj=JSON.parse(text)的用途吗?你为什么要做
-1
你希望我们如何在没有任何数据测试的情况下理解任何东西?正如@MisterJojo所说,如果你需要帮助,你应该提供结构。很多人都可以帮助你,但是很难从你给我们的东西来解释你的模型,而且很少有人愿意花时间来回答他们不得不猜测的问题。即使他们试图为你的问题提供正确的概念,它也可能与你所拥有的不起作用,而且当你解释你真正想要的是什么时,没有人愿意来回重复。
function myFunction() {

    text = localStorage.getItem("userHistory");

    obj = JSON.parse(text);

    var iloscEuro = (text.split("€").length -1);

    var iloscCHF = (text.split("CHF").length -1);

    var iloscSEK = (text.split("SEK").length -1);

    var iloscDolar = (text.split("$").length -1);

    var iloscFunt = (text.split("£").length -1);

    alert(Math.max(iloscEuro, iloscCHF, iloscSEK, iloscDolar, iloscFunt));

}