请教一个js排序问题 var arr= [10,43,5,5,96,7,80,30];sort可以直接得出排序结果。但是现在希望得到的是排序后原有下标的排序。比如如果上面数字按照从大到小排序,最后结果就应该是:[4,6,1,7,0,5,2,3] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var arr= [10,43,5,5,96,7,80,30];var p=[];for(var i=0;i<arr.length;i++){p.push({value:arr[i],index:i});}p.sort(function(a,b){return b.value-a.value;});var r=[];for(var i=0;i<p.length;i++){r.push(p[i].index);}alert(r); 感觉有点绕 没时间细想,你先凑活用吧var arr= [10,43,5,5,96,7,80,30];for(var i = 0; i < arr.length; i++) { arr[i] = {key:i,value:arr[i]};}arr.sort(function(a,b){ return b.value - a.value;});var result = [];for(var tmp in arr) { result.push(arr[tmp].key);}alert(result); 谢谢。再问一个。var arr= [[1,2],[2,8],[3,9],[4,1]];根据第二个值把二维数组重排序。希望得到 [[3,9],[2,8],[1,2],[4,1]]; var arr= [[1,2],[2,8],[3,9],[4,1]];arr = arr.sort(function(a,b) { return b[1] - a[1];}); 不知道这是不是你想要的效果。var arr = [23,42,1,5,3,7,79]; var oldArr = arr.concat([]); var len = arr.length; arr.sort(function(a,b){ return a*1 > b*1 ? 1 : -1}); var a = []; for(var i=0;i<len; i++){ for(var j =0;j<len;j++){ if(oldArr[i] == arr[j]){ a.push(j); } } } document.write('==原来的数组=='+ '<br/>'); document.write('['+oldArr+']' + '<br/>'); document.write('==排序后的数组=='+ '<br/>'); document.write('['+arr+']' + '<br/>'); document.write('==原来数组在排序后的数组的元素的位置=='+ '<br/>'); document.write('['+a+']' + '<br/>'); 请教:大耗时JS执行时,页面卡住的问题 JavaScript如何实现点击页面上的ActiveX效果 屏蔽按键 firefox JS高手进来帮下忙。 请教,如何隐藏文件选择对象的TxtBox和修改按钮文字? 高手进,棘手的问题 写入COOKIE的问题 jqury ui较好的有那几个? 请问如何调用系统的打印函数。 关于 jq $.ajax 会重复响应是怎么一个回事? extjs类似msn提示窗口的问题 谁推荐本javascript高级点的书
var p=[];
for(var i=0;i<arr.length;i++){
p.push({value:arr[i],index:i});
}
p.sort(function(a,b){return b.value-a.value;});
var r=[];
for(var i=0;i<p.length;i++){
r.push(p[i].index);
}
alert(r);
var arr= [10,43,5,5,96,7,80,30];
for(var i = 0; i < arr.length; i++) {
arr[i] = {key:i,value:arr[i]};
}
arr.sort(function(a,b){
return b.value - a.value;
});var result = [];
for(var tmp in arr) {
result.push(arr[tmp].key);
}
alert(result);
再问一个。
var arr= [[1,2],[2,8],[3,9],[4,1]];根据第二个值把二维数组重排序。
希望得到 [[3,9],[2,8],[1,2],[4,1]];
arr = arr.sort(function(a,b) {
return b[1] - a[1];
});
var oldArr = arr.concat([]);
var len = arr.length;
arr.sort(function(a,b){ return a*1 > b*1 ? 1 : -1});
var a = [];
for(var i=0;i<len; i++){
for(var j =0;j<len;j++){
if(oldArr[i] == arr[j]){
a.push(j);
}
}
}
document.write('==原来的数组=='+ '<br/>');
document.write('['+oldArr+']' + '<br/>');
document.write('==排序后的数组=='+ '<br/>');
document.write('['+arr+']' + '<br/>');
document.write('==原来数组在排序后的数组的元素的位置=='+ '<br/>');
document.write('['+a+']' + '<br/>');