我正在编写一份调查脚本,我正试图找出一种循环数字列表的方法,以找到使用javascript输入的最高3位数字。
数字问题列表 的 Q1
代码 的 1 2 3 4 5
我希望它遍历所有5个代码,找到每个代码中的数字(可以是0-10),并与所有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个数字。
我希望这有道理吗?
答案 0 :(得分:0)
正如评论中所讨论的,这是实现这一目标的伪步骤,
首先通过遍历数组创建一个地图,
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个代码