如何从数字列表中选择最小的数字?

时间:2012-09-03 03:15:52

标签: javascript list numbers

我有四个数字可能相同,但很可能不同。基本上我希望这个函数选择它们没有相同的数量,但如果它们不相同,则选择最低的一个,如果有两个是相同的,只需选择其中一个并继续使用它。

例如,我有3434339634143374。好吧,我希望函数返回给我说0如果它们全部相同,1表示第一个,依此类推。所以在这种情况下我需要返回4

但如果数字为321576812321,则会返回给我1

我已经在这里呆了几天了,我似乎无法找到任何办法来做我需要做的事情。任何人都知道可以让这项工作变得神奇的东西吗?谢谢!

修改 我的方法让我做了一些事情,创建一个数组排序并尝试使用最后的结果,但是当我对数组进行排序时,键被搞砸了所以我不知道它属于哪个值

 var choices = new Array();
 choices[1] = parseInt(value1);
 choices[2] = ...
 choices = choices.sort();
 //and then I ran into the problem that my keys being not starting 
 //with 0, it added an element which I was able to remove by doing this
 choices = choices.splice(0,4);

然后我被困在那里

1 个答案:

答案 0 :(得分:2)

这是回答问题的开始。正如其他人所指出的那样,这段代码并没有处理你提到的所有案例;这是故意的。

  

如何从数字列表中选择最小的数字?

手卷方式; O(n)和一遍:

var myList = [3434, 3396, 3414, 3374];
var min = Infinity;
var minIndex = -1;
var current;

for (var i=0; i<myList.length; i++)
{
    current = myList[i];
    if (current < min)
    {
        min = current;
        minIndex = i;
    }
}

// the value you want is in minIndex

更简洁;还有O(n)但是两个遍历数组:

var min = Math.min.apply(null, myList);
var minIndex = myList.indexOf(min);

N.B Array.indexOf在旧版IE中需要垫片。


  

基本上我希望这个功能选择没有相同的数量

正如他们所说,这项练习留待读者阅读。