在数字循环中查找顶部数字

时间:2017-12-17 09:57:13

标签: javascript

我正在编写一份调查脚本,我正试图找出一种循环数字列表的方法,以找到使用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个数字。

我希望这有道理吗?

1 个答案:

答案 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获得c1c2c4。代码总数超过3,因此您可以从那里停止。然后,在c1c2c3之外,您可以随机选择2个代码