我正在编写调查,我正在尝试找出一种通过数字列表循环的方法,以查找使用JavaScript输入的最高3个数字。
数字问题列表 Q1
代码 12345
我希望它通过所有5个代码循环循环找到每个代码(可以是0-10),并与所有十个代码进行比较以选择最高的3个数字。如果有三个以上的最高数字,那么它需要选择3个或更多。
示例:Q1
代码1- f('q1')[' 1 '] ==('3')
代码2 -f('q1')[' 2 '] ==('2')
代码3- f('q1')[' 3 '] ==('5')
代码4- f('q1')[' 4 '] ==('0')
代码5- f('q1')[' 5 '] ==('5')
在此示例中,我需要的脚本会选择代码1(3),代码3(5)和代码5(5)是最高的3个数字。
我希望这是有道理的?
如评论中所讨论的,这是实现此目标的伪步骤
首先通过遍历数组来创建地图,
let array = [
{code: 'c1', value: 4},
{code: 'c2', value: 4},
{code: 'c3', value: 3},
{code: 'c4', value: 4},
{code: 'c5', value: 5}
]
let codeMap = map = array.reduce((rMap, item)=>{
if (rMap[item.value])
rMap[item.value].push(item.code)
else
rMap[item.value] = [item.code]
return rMap
}, {})
let valueArray = Object.keys(codeMap)
// Then repeat the following steps n(as required) number of times
// 1. Find the max of valueArray,
// 2. Remove it from the valueArray
然后,当您拥有前3个值时,您可以参考codeMap
以查找与顶部值相关的代码。
例如,这里的最高值是5、4和3从5开始,您将获得c5
,从4开始,您可以获得c1
,c2
和c4
。代码总数超过3,因此您从那里停止。然后在c1
中,c2
和c3
您可以随机选择2个代码