怎样实现输入数组
var arr=new Array(40,20,30);
返回结果
(1,3,2)即40的在40,20,30中排第一,20的排第三,30排第二。
var arr=new Array(40,20,30);
返回结果
(1,3,2)即40的在40,20,30中排第一,20的排第三,30排第二。
解决方案 »
- js比较日期大小问题
- iframe 父级页面title 怎么取
- tree+tabPanel.当点击加载一个菜单出错时,其它菜单无法加载
- cookie path设置"/"在服务端会读到cookie的值吗(jsp,tomcat服务器)
- 关于ifame里面提交父窗体表单的问题,搞了一天了,都没搞明白,要疯了。
- JAVASCRIPT里面什么时候用双引号,什么时候用单引号
- 如何把session中的值传递给js文件?
- 字符串转换成数值类型的函数是什么
- 能不能使打开的新窗口位于屏幕的最前方!!
- 简单问题2个,每个20分 :) 帮帮忙
- jquery根据textbox宽度控制div宽度,为何实际显示宽度不一致
- 右侧悬浮框的问题...
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
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(","))
<!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>
试试。
> 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 ]