获得Javascript中具有最高价值的前十名变量

时间:2014-07-16 13:19:09

标签: javascript

基本上我有大约36个变量名为t0,t1,t3 ......等等,每个变量都以值0开始,并根据它们增加1的操作。

我希望能够通过将它们放入像var topTen = [t33,t31,t2]这样的数组中来理想地列出十大最高值变量。

5 个答案:

答案 0 :(得分:1)

应该尝试这种方法:

var myarray=["t14", "t53", "t1"]
    myarray.sort();
    myarray.reverse();
var final = myarray.slice(0,10);

//SHOULD GIVE YOU
// ["t53", "t14", "t1"]

然后你可以提取十个第一个值。

更新 - > JSFiddle

答案 1 :(得分:1)

res = [{k:"t1",v:t1},{k:"t2",v:t2},...,{k:"t36",v:t36}].sort(
function(a,b){
return b.v-a.v
}).map(function(x){return x.k}).slice(0,9)

顺便说一句。如果变量表示为对象属性,则可以动态创建数组... 如果需要值,则返回x.v而不是x.k

答案 2 :(得分:0)

首先将变量放在数组中:

var ts = [t0, t1, ...];

然后你可以像这样获得前10名:

var topTen = ts.sort().slice(-10).reverse();

理想情况下,您希望首先将所有值存储在数组中。

答案 3 :(得分:0)

为什么不使用对象存储信息 - 而不是36个变量只有一个具有36个属性的对象。然后,您可以遍历这些值,将它们添加到数组中并获取所需的数字集:

var obj = {
    t1: 1,
    t2: 33,
    t3: 10,
    t4: 9,
    t5: 45,
    t6: 101,
    ...
}

// create an array
var arr = [];

// loop through the object and add values to the array
for (var p in obj) {
  arr.push(obj[p]);
}

// sort the array, largest numbers to lowest
arr.sort(function(a,b){return b - a});

// grab the first 10 numbers
var firstTen = arr.slice(0, 9);

这将返回一个数组 - 只需循环遍历它就可以逐个列出值。

DEMO

答案 4 :(得分:0)

slice前10个元素之后对数组进行排序。

arr.sort(function (a,b) {
    return a - b;
});

var result = arr.slice(0,10);