15-数组concat()方法和push比较
push()接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后的数组的长度
concat()将参数添加到原数组中,这个方法会先copy一个当前数组,然后将接收到的参数添加到这个copy数组的末尾,最后返回新构建的数组,在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回。
如果参数中有数组,concat会拆解数组一项一项放入,而push()是整个数组放入。
一般在数组末尾添加元素用push方法就可以了,但是这样会改变原有数组的数据所以就有了concat方法
concat方法是在原有的基础上添加元素并返回链接之后的副本,并不会修改原有的数组
push方法会把数组原原本本的输出
concat方法会把数组解析之后再输出
数组concat()方法作用:
1. 该方法不会改变原有的数组。 参数可以是array,string,number,object。
2. 返回一个新的数组,如果有数组作为参数传入concat()方法里时,添加的是数组中的元素而不是数组本身。
数组concat()方法机理
1、 concat()在处理过程中会创建一个空的数组,然后再去循环其参数项,然后在对其一个个的进行赋值
2、 只要不改变原数组,那么势必都会创建一个新的数组,那么自然就会响应的比较慢
结论
在实现相同的效果的时候,push往往比concat()更加的高效
用 apply
将数组各项添加到另一个数组
我们可以使用push
将元素追加到数组中。由于push接受可变数量的参数,所以也可以一次追加多个元素。
但是,如果push
的参数是数组,它会将该数组作为单个元素添加,而不是将这个数组内的每个元素添加进去,因此我们最终会得到一个数组内的数组。如果不想这样呢?concat
符合我们的需求,但它并不是将元素添加到现有数组,而是创建并返回一个新数组。 然而我们需要将元素追加到现有数组......那么怎么做好?难道要写一个循环吗?别当然不是!
apply
正派上用场!
var array = ['a', 'b'];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]