数组

Author Avatar
Ninefire 6月 08, 2018
  • 在其它设备中阅读本文章

数组的常用方法

  • 使用push()方法可以向数组的末尾添加一个或多个元素,并返回数组新的长度。
    可以将需要添加的元素作为参数传递,这些元素将会自动添加到数组的末尾。
// 创建一个数组
var arr = ["孙悟空", "猪八戒", "沙僧"];

// 可以将需要添加的元素作为参数传递
// 多个元素以逗号隔开
arr.push("唐僧", "白骨精", "蜘蛛精");

// 该方法会将数组新的长度返回
var result = arr.push("唐僧", "白骨精", "蜘蛛精");
console.log(result); // 6
  • 使用pop()方法可以删除数组的最后一个元素,并返回删除的元素。
result = arr.pop();
console.log(result); // 蜘蛛精
  • 使用unshift()方法可以向数组的开头插入一个或多个元素,并返回数组新的长度。
    向开头插入元素以后,其他元素的索引会依次调整。
var result = arr.unshift("牛魔王", "二郎神");
console.log(result); // 8
  • 使用shift()方法可以删除数组的第一个元素,并返回删除的元素。
var result = arr.shift();
console.log(result); // 牛魔王
  • 使用slice()方法可以提取数组中的指定元素
    参数:(左闭右开区间)相当于[begin,end)
    1. 截取开始位置的索引,包含开始索引
    2. 截取结束位置的索引,不包含结束索引
      第2个参数省略则截取从开始位置到数组最后
    • 如果传递一个负值,则从后往前计算,例如-2为倒数第2个元素
var result = arr.slice(2, 4); // 截取数组中从第3个到第5个元素
console.log(result); // 沙僧,唐僧

var result = arr.slice(3);
console.log(result); // 唐僧,白骨精,蜘蛛精

var result = arr.slice(1,-2);
console.log(result); // 猪八戒,沙僧,唐僧
  • 使用splice()方法可以删除数组中的指定元素
    会将指定元素从原数组中删除,并返回删除的元素。
    参数:
    1. 开始位置的索引
    2. 删除的数量
    3. 第三个及以后的参数会作为元素插入到开始位置索引之前
var result = arr.splice(3,2,"二郎神","武曲星君");
console.log(result); // 唐僧,白骨精
console.log(arr); // 孙悟空,猪八戒,沙僧,二郎神,武曲星君,蜘蛛精
  • 使用concat()方法可以连接两个或多个数组,并返回新数组
    不会修改原数组,新数组以返回值返回。
var newarr = arr1.concat(arr2);

var newarr = arr2.concat(arr3,arr4,"元素");
  • 使用join()方法可以将数组转换为字符串
    不会修改原数组,字符串以返回值返回。
    可以指定一个字符串作为参数,该字符串将成为元素之间的连接符,默认是逗号作为连接符。
var arr_str = arr.join();
console.log(arr_str); // 孙悟空,猪八戒,沙僧,二郎神,武曲星君,蜘蛛精
console.log(typeof arr_str); // string

arr_str = arr.join("-");
console.log(arr_str); // 孙悟空-猪八戒-沙僧-二郎神-武曲星君-蜘蛛精

arr_str = arr.join("");
console.log(arr_str); // 孙悟空猪八戒沙僧二郎神武曲星君蜘蛛精
  • 使用reverse()方法可以反转数组
    直接修改原数组,颠倒整个数组。
    `js
    var arr = [1, 2, 3, 4, 5, 6];

arr.reverse();

console.log(arr); 6,5,4,3,2,1


- 使用`sort()`方法可以对数组元素进行排序

```js
// 对字符串排序,默认按照Unicode编码排序
var arr = ["b", "d", "e", "a", "c"];
arr.sort();
console.log(arr); // a,b,c,d,e

// 对数字排序,也会按照Unicode编码排序
var arr = [5, 11, 2, 4, 3, 1];
arr.sort();
console.log(arr); // 11,1,2,3,4,5

自定义排序规则,给sort()添加一个回调函数来指定排序规则。
回调函数需要指定两个形式参数,两个形参分别代表了数组中的两个元素,第二个参数永远代表第一个参数之后的元素。
浏览器会根据回调函数的返回值来决定这两个元素的顺序:
若返回值大于0,则两个元素交换位置;
若返回值小于0,则元素位置不变;
若返回值等于0,则认为两元素相等。

var arr = [5, 11, 2, 4, 3, 1];

arr.sort(function(a, b){
  /*
  if(a > b){
    return -1;
  }else if(a < b){
    return 1;
  }else{
    return 0;
  }
  */

  // 更加简洁的方法
  return a - b; // 升序
//return b - a;    降序
});

console.log(arr); // 1,2,3,4,5,11

数组的遍历

使用循环遍历数组中的每一个元素

for(var i=0 ; i < arr.length ; i++) {
  console.log(arr[i]);
}

使用forEach()方法遍历数组

这个方法仅支持IE8以上的浏览器。

  • 由我们创建但不由我们调用的函数,称为回调函数
    例如下面这个匿名函数。
  • 数组中有多少个元素函数就会执行多少次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参来读取这些内容。
  • 浏览器会在回调函数中传递三个参数:
    1. 当前正在遍历的元素
    2. 当前正在遍历的元素的索引
    3. 正在遍历的数组
arr.forEach(function(value, index, obj){
  console.log(value);
});

如发现错误请联系我,谢谢你。
本文链接:http://ninefire.tk/JavaScript.basics/16.html