在数字循环中找到最高数字



我正在编写调查,我正在尝试找出一种通过数字列表循环的方法,以查找使用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开始,您可以获得c1c2c4。代码总数超过3,因此您从那里停止。然后在c1中,c2c3您可以随机选择2个代码

最新更新