读书人

JS排序有关问题

发布时间: 2012-05-22 18:18:54 作者: rapoo

JS排序问题
怎样实现输入数组
var arr=new Array(40,20,30);
返回结果
(1,3,2)

即40的在40,20,30中排第一,20的排第三,30排第二。

[解决办法]

JScript code
var arr = new Array(40,20,30);function sortByNumber(a, b) { return b.v - a.v; }function mySort(ar) {    var ar_tmp = [], result = [];    for (x in ar) ar_tmp.push({k: parseInt(x) + 1, v: ar[x]});    ar_tmp.sort(sortByNumber);    for (i in ar_tmp) result.push(ar_tmp[i].k);    return result;}alert(mySort(arr)); //1,3,2
[解决办法]
JScript code
var arr = new Array(40,20,30);var a = [];var b = [];for(var i in arr) a.push({"idx":i, "val":arr[i]});a.sort(function(x, y){    return y.val - x.val;});for(var i in a) a[i].pos = parseInt(i,10)+1;a.sort(function(x, y){    return x.idx - y.idx;})for(var i in a) b.push(a[i].pos);alert(b.join(","))
[解决办法]
HTML code
<!DOCTYPE HTML><html>    <head>        <meta charset="gb2312" />        <title></title>    </head>    <body>        <script>            Array.prototype.clone = function(){                var tmp = [];                for(var i = 0, len = this.length; i < len; i++){                    tmp.push(this[i]);                }                return tmp;            }            Array.prototype.find = function(val){                for(var i = 0, len = this.length; i < len; i++){                    if( this[i] === val ){                        return i;                    }                }                return -1;            }                        var arr = [40, 20, 30, 15, 8, 76];            var tmp = arr.clone().sort(function(a, b){return b - a;})            var re = [];            for(var i = 0, len = arr.length; i < len; i++){                re.push(tmp.find(arr[i])+1);            }            alert(re);        </script>    </body></html>
[解决办法]
JScript code
> var arr = [40, 20, 30];undefined> var result = [1,2,3];undefined> result.sort(function(a, b) { return arr[b-1]-arr[a-1];});[ 1, 3, 2 ] 

读书人网 >JavaScript

热点推荐