JavaScript中数组Array.sort()排序方法详解

Javascript piniu 16浏览 0评论

sort() 方法用于对数组的元素进行排序。

排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。

一、语法:

arr.sort((m, n) => { ... return (number); }
sort内的函数返回值小于0, m排在n前面; 返回值等于 0, m,n相等顺序无关要紧; 返回值大于 0, m排在n后面;

二、代码实例

1、对数字数组进行由小到大的顺序进行排序。

var arr = [22, 12, 3, 43, 56, 47, 4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56]
arr.sort((m, n) => {
	if (m < n) return -1;
	else if (m > n) return 1;
	else return 0;
});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56]

2、对字符串数组执行不区分大小写的字母表排序。

var arr = ['abc', 'Def', 'BoC', 'FED'];
console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"]
console.log(arr.sort((s, t) => {
	var a = s.toLowerCase();
	var b = t.toLowerCase();
	if (a < b) return -1;
	if (a > b) return 1;
	return 0;
})); // ["abc", "BoC", "Def", "FED"]

3、对包含对象的数组排序,要求根据对象中的年龄进行由大到小的顺序排列(数值型)

var arr = [{ 'name': '张三', age: 26 }, { 'name': '李四', age: 12 }, { 'name': '王五', age: 37 }, { 'name': '赵六', age: 4 }];

arr.sort((s, t) => {
	return t.age - s.age;
});
console.log(arr) // [{ name: "王五", age: 37 }, { name: "张三", age: 26 }, { name: "李四", age: 12 }, { name: "赵六", age: 4 }]

4、对包含对象的数组排序,要求根据对象中的姓名不区分大小写进行由小到大的顺序排列(字符串型)

const arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'D李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'C赵六', age: 4 }];

arr.sort((s, t) => {
      const _s = s.name.toLowerCase(); // 'D李四' -> 'd李四'
      const _t = t.name.toLowerCase();
      if (_s > _t) {
          return 1;
      }
      else if (_s < _t) {
          return -1;
      }
      else {
          return 0;
      }
});

console.log(arr) // [{ name: "a张三", age: 26 }, { name: "b王五", age: 37 }, { name: "C赵六", age: 4 }, { name: "D李四", age: 12 }]

三、拓展

1、对数组元素随机排序

var arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'd李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'c赵六', age: 4 }];
arr.sort((s, t) => {
	return Math.random() < 0.5 ? 1 : -1;
});

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: