如果给定一个具有名称和值的字符串,而不是使用javascript的json字典,如何返回最高值

如果给定一个具有名称和值的字符串,而不是使用javascript的json字典,如何返回最高值,javascript,arrays,string,parsing,max,Javascript,Arrays,String,Parsing,Max,我有这样一个字符串(这是我从RESTAPI得到的结果,但它不是Json数组,而是一个字符串): 现在我需要的是返回具有最高值的名称(在本例中,这将是名称Howdie)。我正在考虑构建一个函数来查找最大的数字并返回该名称。但是,我不确定是否有任何方法可以使用JavaScript实现这一点。如果是这样的字符串: const input = "[Alex:1, Rose:12, Howdie:72, Lina:1, Emily:1, Pac:15, Virus:1, Love:18, Brie:11]

我有这样一个字符串(这是我从RESTAPI得到的结果,但它不是Json数组,而是一个字符串):


现在我需要的是返回具有最高值的名称(在本例中,这将是名称Howdie)。我正在考虑构建一个函数来查找最大的数字并返回该名称。但是,我不确定是否有任何方法可以使用JavaScript实现这一点。

如果是这样的字符串:

const input = "[Alex:1, Rose:12, Howdie:72, Lina:1, Emily:1, Pac:15, Virus:1, Love:18, Brie:11]";
我们首先需要将其导入一个有效的js数组:

const parsed = input
      .replace("[","")
      .replace("]","")
      .split(", ") //get key value pairs
      .map(pair => pair.split(":"));//get 2d array
现在,我们可以在值降序后对解析的数据进行排序:

parsed.sort(( [nameA,valueA], [nameB,valueB] ) =>
   valueB - valueA
);
要获得最大的一个(第一个):

上面的代码是ES6,如果您想支持旧浏览器,可以使用
var
而不是
const
,也可以使用常规函数而不是
=>


如果您认为上面的代码不起作用,请单击;)

这不是一个有效的数组,如果它是一个字符串,它什么都无效,你必须自己做一个解析器,为什么没有办法呢?请尝试实现它,而不是要求一个完整的解决方案,这不是这个网站的目的。
parsed.sort(( [nameA,valueA], [nameB,valueB] ) =>
   valueB - valueA
);
const result = parsed[0];
//key and value:
const key = result[0], value = result[1];

//OR both at once

const [key,value] = parsed[0];