我在javascript数组排序中需要帮助
我有一个排序数组如下:
mainArray : [25 20 20 20 18 17 17 15 12 12 10 5 5 ]
mainArray 可能包含也可能不包含重复值。
A.采取重复案例
现在,根据用户输入,我需要返回 finalArray ,条件如下。
如果用户说获得前3个元素,那么程序应该返回,
finalArray:[25 20 20 20 18] 或
如果用户说获得前5名,那么
finalArray:[25 20 20 20 18 17 17 15]
B.选择非重复案例
mainArray : [25 20 18 17 15 12 10 5 ]
现在,
如果用户说获得前3个元素,那么程序应该返回,
finalArray:[25 20 18] 或
如果用户说获得前5名,那么
finalArray:[25 20 18 17 15]
这是我尝试过的代码:
filterLength = 3;//top 3
var finalTarget = [];
for (var i = 0; i < filterLength; i++) {
if (typeof targetArray[i + 1] !== 'undefined') {
if (targetArray[i] == targetArray[i + 1]) {
filterLength++;
}
}
finalTarget.push(targetArray[i]);
}
if (finalTarget.length > targetArray.length) {
finalTarget.splice(targetArray.length, finalTarget.length - targetArray.length)
}
console.log(finalTarget);
任何帮助都值得赞赏。谢谢。
答案 0 :(得分:0)
这是我的代码:
function sortNumber(a,b)
{
return a - b
}
function unique(arr) {
var ret = [];
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
if (ret.indexOf(item) === -1) {
ret.push(item);
}
}
return ret;
}
function dSort(arr, t, u) {
if(t > arr.length) {
t = arr.length;
}
if (u) {
arr = unique(arr);
}
arr.sort(sortNumber)
return arr.slice(0, t);
}
var arr = [1, 55, 12,9, 41, 55, 1, 2, 5, 5];
console.log(dSort(arr, 5, true))
//1,2,5,9,12
console.log(dSort(arr, 5, false))
//1,1,2,5,5