2、合并数组
~~~
var a = [1, 2, 3];
var b = [4, 5, 6];
Array.prototype.push.apply(a, b)
// 或者
a.push.apply(a, b)
// 上面两种写法等同于
a.push(4, 5, 6)
a // [1, 2, 3, 4, 5, 6]
~~~
3、<span style="color: #c7254e;">push()</span>:向数组末尾添加一个或多个元素并返回<span style="color: #c7254e;">length</span>。会改变原数组。
4、<span style="color: #c7254e;">pop()</span>:删除数组的最后一个元素,并返回该元素。会改变原数组。
4.1、<span style="color: #c7254e;">shift()</span>:用于删除数组的第一个元素,并返回该元素。会改变原数组。
4.2、<span style="color: #c7254e;">unshift()</span>:用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
5、<span style="color: #c7254e;">join()</span>:以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔。
~~~
var a = [1, 2, 3, 4];
a.join(' ') // '1 2 3 4'
a.join(' | ') // "1 | 2 | 3 | 4"
a.join() // "1,2,3,4"
~~~
通过<span style="color: #c7254e;">call</span>方法,这个方法也可以用于字符串。
~~~
Array.prototype.join.call('hello', '-')
// "h-e-l-l-o"
~~~
6、<span style="color: #c7254e;">concat()</span>:用于多个数组的合并。它将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组不变。
~~~
[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]
// 等同于
[1, 2, 3].concat(4, [5, 6])
[1, 2, 3].concat([4], [5, 6])
~~~
7、<span style="color: #c7254e;">reverse()</span>:用于颠倒数组中元素的顺序,返回改变后的数组。注意,该方法将改变原数组。
~~~
var arr = [1,2,3];
arr.reverse();
// [3,2,1]
~~~
8、<span style="color: #c7254e;">slice()</span>:用于提取原数组的一部分,返回一个新数组,原数组不变。
它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。
~~~
// 格式
arr.slice(start_index, upto_index);
// 用法
var a = ['a', 'b', 'c'];
a.slice(0) // ["a", "b", "c"]
a.slice(1) // ["b", "c"]
a.slice(1, 2) // ["b"]
a.slice(2, 6) // ["c"]
a.slice() // ["a", "b", "c"]
~~~
如果<span style="color: #c7254e;">slice</span>方法的参数是负数,则表示倒数计算的位置。
~~~
var a = ['a', 'b', 'c'];
a.slice(-2) // ["b", "c"]
a.slice(-2, -1) // ["b"]
~~~
9、<span style="color: #c7254e;">splice()</span>:<span style="color: #c7254e;">splice</span>方法用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
<span style="color: #c7254e;">splice</span>的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。
~~~
// 格式
arr.splice(index, count_to_remove, addElement1, addElement2, ...);
// 用法
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", "f"]
a // ["a", "b", "c", "d"]
~~~
上面代码从原数组4号位置,删除了两个数组成员。
~~~
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2, 1, 2) // ["e", "f"]
a // ["a", "b", "c", "d", 1, 2]
~~~
上面代码除了删除成员,还插入了两个新成员。
起始位置如果是负数,就表示从倒数位置开始删除。
~~~
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(-4, 2) // ["c", "d"]
~~~
上面代码表示,从倒数第四个位置c开始删除两个成员。
如果只是单纯地插入元素,splice方法的第二个参数可以设为0。
~~~
var a = [1, 1, 1];
a.splice(1, 0, 2) // []
a // [1, 2, 1, 1]
~~~
如果只提供第一个参数,等同于将原数组在指定位置拆分成两个数组。
~~~
var a = [1, 2, 3, 4];
a.splice(2) // [3, 4]
a // [1, 2]
~~~