基本上我有大约36个变量名为t0,t1,t3 ......等等,每个变量都以值0开始,并根据它们增加1的操作。
我希望能够通过将它们放入像var topTen = [t33,t31,t2]这样的数组中来理想地列出十大最高值变量。
答案 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);
这将返回一个数组 - 只需循环遍历它就可以逐个列出值。
答案 4 :(得分:0)
在slice
前10个元素之后对数组进行排序。
arr.sort(function (a,b) {
return a - b;
});
var result = arr.slice(0,10);