如果给定一个具有名称和值的字符串,而不是使用javascript的json字典,如何返回最高值
我有这样一个字符串(这是我从RESTAPI得到的结果,但它不是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]
现在我需要的是返回具有最高值的名称(在本例中,这将是名称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];