如何使用javascript从数组中获取所需的顶级元素

时间:2014-06-16 05:15:22

标签: javascript jquery arrays sorting duplicates

我在javascript数组排序中需要帮助

我有一个排序数组如下:

mainArray : [25 20 20 20 18 17 17 15 12 12 10 5 5 ]

mainArray 可能包含也可能不包含重复值。

A.采取重复案例

现在,根据用户输入,我需要返回 finalArray ,条件如下。

  1. 如果用户说获得前3个元素,那么程序应该返回,

    finalArray:[25 20 20 20 18]

  2. 如果用户说获得前5名,那么

    finalArray:[25 20 20 20 18 17 17 15]

  3. B.选择非重复案例

     mainArray : [25 20 18 17 15 12 10 5  ]
    

    现在,

    1. 如果用户说获得前3个元素,那么程序应该返回,

      finalArray:[25 20 18]

    2. 如果用户说获得前5名,那么

      finalArray:[25 20 18 17 15]

    3. 这是我尝试过的代码:

      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);
      

      任何帮助都值得赞赏。谢谢。

1 个答案:

答案 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