根据每个元素的长度对数组进行排序
我有一个这样的数组:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
排序后,输出数组应该是:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
我的意思是,我想按照每个元素长度的降序排列。
您可以使用Array.sort
方法对数组进行排序。 将字符串长度作为排序标准的排序函数可以按如下方式使用:
arr.sort(function(a, b){
// ASC -> a.length - b.length
// DESC -> b.length - a.length
return b.length - a.length;
});
注意:按字符串长度排序["a", "b", "c"]
不保证返回["a", "b", "c"]
。 根据规格:
排序不一定是稳定的(即,比较相等的元素不一定保持原始顺序)。
如果目标是按照字典顺序排序,则必须指定其他条件:
["c", "a", "b"].sort(function(a, b) {
return a.length - b.length || // sort by length, if equal then
a.localeCompare(b); // sort by dictionary order
});
这是根据你问的JavaScript字符串的长度来排序:
[通过冒泡排序解决问题的方法] [1]
[1]:http://jsfiddle.net/sssonline2/vcme3/2/ enter code here
基于萨尔曼的回答,我写了一个小函数来封装它:
function sortArrayByLength(arr, ascYN) {
arr.sort(function (a, b) { // sort array by length of text
if (ascYN) return a.length - b.length; // ASC -> a - b
else return b.length - a.length; // DESC -> b - a
});
}
然后用它来调用它
sortArrayByLength( myArray, true );
请注意,不幸的是,函数可以/不应该添加到数组原型中,如本页所述。
此外,它修改了作为参数传递的数组,并且不返回任何内容。 这会强制重复数组,对于大型数组来说不会太好。 如果有人有更好的主意,请发表评论!
链接地址: http://www.djcxy.com/p/19041.html