【问题标题】:How to get the required top elements from array using javascript如何使用javascript从数组中获取所需的顶部元素
【发布时间】:2014-08-05 21:10:47
【问题描述】:

我需要 javascript 数组排序方面的帮助

我有一个如下的排序数组:

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

ma​​inArray 可能包含也可能不包含重复值。

A. 重复案例

现在,根据用户输入,我需要返回具有以下条件的 finalArray

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

    finalArray : [25 20 20 20 18]

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

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

B.不重复的情况

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

现在,

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

    finalArray : [25 20 18]

  2. 如果用户说获得前 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);

任何帮助都会很重要。谢谢。

【问题讨论】:

  • 即使是我的客户也不能给出这样的要求..! :)
  • @RajaprabhuAravindasamy 我正确地提出了这个问题,以便人们能够理解我的需要。无论如何,很好的评论...... :)

标签: javascript jquery arrays sorting duplicates


【解决方案1】:

这是我的代码:

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

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2015-01-25
    • 2018-09-29
    • 1970-01-01
    • 2014-05-23
    • 2019-04-19
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多