我有四个数字可能相同,但很可能不同。基本上我希望这个函数选择它们没有相同的数量,但如果它们不相同,则选择最低的一个,如果有两个是相同的,只需选择其中一个并继续使用它。
例如,我有3434
,3396
,3414
和3374
。好吧,我希望函数返回给我说0
如果它们全部相同,1
表示第一个,依此类推。所以在这种情况下我需要返回4
。
但如果数字为321
,576
,812
和321
,则会返回给我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);
然后我被困在那里
答案 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中需要垫片。
基本上我希望这个功能选择没有相同的数量
正如他们所说,这项练习留待读者阅读。