我有三個排序的數組,我需要從這些數組中找到前五個「5」元素。我能夠找到前兩個元素最大的元素。如何找到其他?如何從排序的數組中找到最大的元素?
你能建議我們如何找到其他3個元素?
這裏是我的代碼
var maxArray=[];
var array1=[2,7,12,23,40,44,67,88,102]
var array2=[3,12,14,17,23,40,41,67,108]
var array3=[8,12,23,40,59,86,119,130]
var firstMax=array1[array1.length-1];
var secondMax=array2[array2.length-1];
alert(array1[array1.length-1]);
if(array1[array1.length-1]>array2[array2.length-1] && array1[array1.length-1]>array3[array3.length-1]){
maxArray.push(array1[array1.length-1]) ;
firstMax=array1[array1.length-1];
if(array2[array2.length-1]>array3[array3.length-1]){
secondMax=array2[array2.length-1];
}else {
secondMax=array3[array3.length-1];
}
}else if(array2[array2.length-1]>array1[array1.length-1]&& array2[array2.length-1]>array3[array3.length-1]){
maxArray.push(array1[array2.length-1])
firstMax=array2[array2.length-1];
if(array1[array1.length-1]>array3[array3.length-1]){
secondMax=array1[array1.length-1];
}else {
secondMax=array3[array3.length-1];
}
}else{
maxArray.push(array3[array3.length-1])
firstMax=array3[array3.length-1];
if(array2[array2.length-1]>array1[array1.length-1]){
secondMax=array2[array2.length-1];
}else {
secondMax=array1[array1.length-1];
}
}
maxArray.push(secondMax)
alert(maxArray)
小提琴 http://jsfiddle.net/9vsjm8uh/
豈不是更容易建立一個合併的陣列,那種,然後彈出關閉的最後5個元素? – 2014-09-03 17:03:53
@MarcB好吧,這是主意,不是嗎?按降序合併數組,並在合併數組中的5個元素時停止合併? – beaker 2014-09-03 17:06:04
是的,但OP的做了很多額外的工作,而不是基本的'pop_5((array1 + array2 + array3).sort())'(僞代碼,當然) – 2014-09-03 17:07:58