首先来看这样一个问题:
var arr = [14,60,44,35,63];
对这个数组由大到小排序,显然。。很简单,用Array对象的sort()方法最轻松了:
var arr = [14,60,44,35,63];
console.log(arr.sort(function(a,b){ ///输出结果: [ 63, 60, 44, 35, 14 ]
return b-a;
}))
如果将上面数组中的每个数放到一个二维数组且位于二维的末位时,想要使二维数组按其大小排列呢?像这样:
var arr = [[10, 14], [16, 60], [7, 44], [26, 35], [22, 63]];
将上面的二维数组,按照每个元素中第二个数从大到小的顺序进行排序输出,输出结果应该为:
[[22, 63], [16, 60], [7, 44], [26, 35], [10, 14]]
这是直接用sort()方法已经不能够满足我了~~
于是就需要另一个超级好用的方法来帮忙——map()
1、用map()方法遍历输出一个object对象数组:一维数组中,每个二维数组的指定位置的值,以及该二维数组在一维数组中的索引值
2、再用sort()方法对object对象的中所记录的数字的值进行排序
3、按sort()方法排序后的顺序,依次输出对应记录的一维数组的索引值对应的数组
(可能我的叙述有点不太清楚,还是直接上代码比较直接)
var arr = [[10, 14], [16, 60], [7, 44], [26, 35], [22, 63]];
var mapped = arr.map(function(ar,i){
return {value:ar[1],index:i} //输出一个object对象,value为排序的数字的值,index为数字所在的数组在一维数组中的索引值
})
mapped.sort(function(a,b){
return b.value-a.value;
})
var result = mapped.map(function(ar){
return arr[ar.index];
})
console.log("按照每个元素中第二个数从大到小的顺序进行排序输出,输出结果应该为:")
console.log(result);
对于多维或者其他位置的数字进行类似排序或其他处理时都可以应用此思想利用sort()和map()结合处理