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

时间:2019-06-06 14:38:38

标签: javascript counting

我创建了一个新的应用程序,用于出于科学目的比较交换所。

我需要从JSON文本中选择(€,CHF,SEK,$,£)之间最常用的值,并将其显示为以下值之一(EURO,FRANK,KORONA,DOLAR,FUNT)。

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));

}

当前,显示使用最受欢迎货币的次数。

3 个答案:

答案 0 :(得分:1)

请注意,您的JSON字符串可能具有内置结构,因此比使用split()解析性能要慢得多,该解析结构的性能要高得多。

但是,由于我不知道该结构是什么,我将采用您选择的方法。

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

这里的优点是您可以获取所有货币的计数,如果您在2种或2种以上货币之间取得并列以表示出最大的代表,这可能会很有用。

const text = `{"values": [ '€123', 'CHF123', 'CHF456', 'SEK123', '$123', '£123' ]}`;

const currencies = ["€", "CHF", "SEK", "$", "£"];

const counts = currencies
  .map(
    currency =>
      ({
        currency,
        count: text.split(currency).length -1,
      })
  )
  .sort(
    (l, r) =>
      r.count - l.count
  );

console.log( counts );

如果您只想要最大的东西,可以从数组中获取它:

counts[0].currency

答案 1 :(得分:0)

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

import glob
import os
import pandas as pd

path = 'C:/BD/KENYA/'
files = glob.glob(os.path.join(path, 'Kenya * dated *')
df_all = None
for file in files:
  df = pd.read_excel(file)
  if not df_all:
    df_all = df
  else:
    df = df.append(df)
df_all.to_excel('C:/BD/KENYA/Kenya 1686 dated 20.03.19.xlsx')

答案 2 :(得分:0)

使用“符号”翻译创建对象文字。
比起您可以使用String.prototype.match()来计算字符串中出现的次数

const symb = {'€':'EURO', 'CHF':'FRANK', 'SEK':'KORONA', '$':'DOLAR', '£':'FUNT',};

function countExc(text) {
  const obj = JSON.parse(text), res = {};
  for(k in obj) res[symb[k]] = (obj[k].match(new RegExp(`\\${k}`,'g')) || []).length;
  return res;
}

console.log( countExc(`{"CHF":"1CHF 2CHF", "€":"100€", "$":"1$ 2$ 4$"}`) );