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]

 

 

 

posted @ 2021-06-16 16:41  猎奇游渔  阅读(314)  评论(0编辑  收藏  举报