首先,数组的方法中有数组的原型方法,也有从object对象继承来的方法,这里我们只介绍数组的原型方法。
一、pop,push,shift,unshift,splice,sort,reverse
这里之所以会将这七个方法单独拿出来介绍,是因为在数组的原型方法中这七个方法可以改变数组自身的内容,并且也是Vue源码中实现数组类型变量的变化侦测时设置的拦截器中拦截的七个方法。
- pop()
pop() 方法用于删除并返回数组的最后一个元素。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值
let arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
// [George, John, Thomas]
const _del = arr.pop();
console.log(_del); // Thomas
console.log(arr); // [George, John]
2.push()
push() 方法用于向数组的末尾添加一个或多个元素,并返回新的长度
let arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
// [George, John, Thomas]
const length= arr.push("James");
console.log(length); // 4
console.log(arr); // [George, John, Thomas, James]
3.shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。
let arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
// [George, John, Thomas]
const _del = arr.shift();
console.log(_del); // George
console.log(arr); // [John, Thomas]
4.unshift()
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
let arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
// [George, John, Thomas]
const length= arr.unshift("James");
console.log(length); // 4
console.log(arr); // [James, John, Thomas, George]
5.splice()
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
基本语法:arrayObject.splice(index,howmany,item1,.....,itemX)
- index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
- howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
- item1, ..., itemX:可选。向数组添加的新项目。
let arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
// [George, John, Thomas, James, Adrew, Martin]
arr.splice(2,1);
// [George, John, James, Adrew, Martin]
arr.splice(2,1,"William");
// [George, John, William, Adrew, Martin]
arr.splice(2,3,"Lucy","Jack");
// [George, John, Lucy, Jack]
6.sort();
sort() 方法用于对数组的元素进行排序。
*基本语法:arrayObject.sort(sortby)
- sortby:可选。规定排序顺序。必须是函数。
let arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
// [George, John, Thomas, James, Adrew, Martin]
arr.sort();
// [Adrew, George, James, John, Martin, Thomas]
7.reverse();
reverse() 方法用于颠倒数组中元素的顺序。
let arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
// [George, John, Thomas]
arr.reverse();
// [Thomas, John, George]
二、join(),concat(),slice(),split()
- join()
join() 方法用于把数组中的所有元素放入一个字符串。
arrayObject.join(separator)
- separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
let arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
console.log(arr.join('-'));
// George-John-Thomas
- concat()
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
arrayObject.concat(arrayX,arrayX,......,arrayX)
- arrayX:必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
let arr = [1,2,3];
arr.concat(4,5);
// [1,2,3,4,5]
- slice()
slice() 方法可从已有的数组中返回选定的元素。
arrayObject.slice(start,end)
- start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
- end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
let arr = [1,2,3,4,5];
let new_arr = arr.slice(2,4);
console.log(new_arr);
// [3,4]
- split()
split() 方法用于把一个字符串分割成字符串数组。
stringObject.split(separator,howmany)
- separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
- howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
let str="How are you doing today?";
let arr = str.split(" ", 4);
console.log(arr);
// [How,are,you,doing]