logo头像

求知若渴,虚心若愚

JavaScript - 数组( Array ) - 数组方法(二)

reverse()

  • 用于颠倒数组中元素的顺序。
    • 返回的是颠倒后的数组
    • 会改变原数组
1
2
3
var arr = [11,22,33];
console.log(arr.reverse()); //[33, 22, 11] 翻转数组
console.log(arr); //[33, 22, 11] 会改变原数组

sort 排序

  • 按照 Unicode code 位置排序,默认升序
  • 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,是按照字符编码的顺序进行排序
  • 要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

  • array.sort()方法默认是升序排序,

    • 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值
    • 然后返回一个用于说明这两个值的相对顺序的数字。
    • 比较函数应该具有两个参数 a 和 b,其返回值如下:
      • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
      • 若 a 等于 b,则返回 0。
      • 若 a 大于 b,则返回一个大于 0 的值。

本质:比较函数两个参数a和b,返回a-b升序,返回b-a降序

1
2
3
4
5
6
7
8
9
10
11
12
var arr = [4,3,6,5,7,2,1];
arr.sort();
console.log(arr);
//输出结果[1,2,3,4,5,6,7]

var arr = [4,3,6,5,7,2,1];
arr.sort();
arr.sort(function(a,b){
return b-a;
});
console.log(arr);
//输出结果[7,6,5,4,3,2,1]
  • 按照数组对象中某个属性值进行排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var arr= [ 
{ 'sortNum': 2},
{ 'sortNum': 1},
{ 'sortNum': 5},
{ 'sortNum': 6},
{ 'sortNum': 7},
{ 'sortNum': 3},
{ 'sortNum': 9},
{ 'sortNum': 4},
{ 'sortNum': 0}
];

arr.sort(function(a, b){
return a.sortNum - b.sortNum;// 升序排序
});
console.log(arr);
// 0: {sortNum: 0}
// 1: {sortNum: 1}
// 2: {sortNum: 2}
// 3: {sortNum: 3}
// 4: {sortNum: 4}
// 5: {sortNum: 5}
// 6: {sortNum: 6}
// 7: {sortNum: 7}
// 8: {sortNum: 9}

slice()

  • 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
    • 返回选定的元素
    • 该方法不会修改原数组
1
2
3
var arr = [11,22,33,44,55];
console.log(arr.slice(1,3)); //[22,33] 返回选择的元素
console.log(arr); //[11,22,33,44,55] 不会改变原数组

TIP
arr.slice()参数不加,相当于复制一个数组

splice()

  • splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
  • 如果从数组中删除了元素,则返回的是含有被删除的元素的数组。
  • splice() 方法会直接对数组进行修改
    • start:整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    • deleteCount:要删除的项目数量。如果设置为 0,则不会删除项目。
    • options:向数组添加的新项目(可选)
  • 返回值:
    • 包含被删除项目的新数组,如果有的话。
1
2
3
4
5
6
7
8
var a = [11,22,33,44];
console.log(a.splice(1,0,88)); //[] 么有删除元素,所以返回空数组
console.log(a); // [11, 88, 22, 33, 44] 第三个参数,添加了88元素,在索引1位置


var b = [11,22,33,44];
console.log(b.splice(1,2,3)); //[22, 33] 返回删除的元素组成的数组
console.log(b); //[11, 3, 44] 尕布了原有的数组
支付宝打赏 微信打赏

赞赏是对我们的肯定!