手机版

javascript使用concat方法合并数组

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

在介绍之前,我问一个问题:如何将多个数组合并成一个数组?

以下共享会话分为以下几个小节:

1.1.concat方法的基本介绍

2.通过一个例子感受concat方法

1.1.concat方法的基本介绍

concat方法用于合并多个数组。它将新数组的成员添加到原始数组的尾部,然后在不更改原始数组的情况下返回一个新数组。

console.log([])。concat([1],[2],[3]);//[1,2,3]console.log([])。concat([[1],[2],[3]));//[[1],[2],[3]]console.log([])。concat(4,[[5,6],[7]]));//[4,[5,6],[7]]在上面的代码中,第一个返回值是将一个空数组与三个数组[1],[2],[3]组合成一个数组,因此返回[1,2,3]。第二种是将空数组与成员为[1]、[2]和[3]的二维数组合并,这样就会返回[[1]、[2]和[3]]。请注意,返回了一个二维数组。第三个例子也是如此。理解这里的概念非常重要,就是将新数组的成员添加到原数组的尾部。

除了接受数组作为参数,concat还可以接受其他类型的值作为参数。它们将被用作新的元素,增加数组尾部。

console.log([])。concat(1,2,3));//[1,2,3];//相当于console.log([])。concat(1,[2,3]);//[1,2,3];console.log([])。concat([1],[2,3]);//[1,2,3];虽然这里内容不多,但看起来挺简单的。但是真的不容易理解。

2.通过一个例子感受concat方法

讲完基础知识,给大家看一个我最近遇到的话题。原问题是这样的。

看例子就知道是什么意思了。

这个问题的解决方案之一是:

var flat=function(arr){ return[]. concat . apply([],arr);};这个简单的函数可以实现合并数组中元素的功能。但是当我理解这个返回值的时候,就出现了问题。

问:为什么使用apply方法和不使用apply方法有区别?

console.log([].concat.apply([],[[1],[2],[3]]));//[1,2,3]console.log([])。concat([[1],[2],[3]));//[[1],[2],[3]]在上面的代码中,一个新的数组也被添加到一个空数组的尾部,第一个返回[1,2,3]。第二种是二维数组。

折腾了一段时间,终于明白了不同的道理。

首先,当我们在空数组中调用实例方法concat时,它是一个传入concat并推到数组末尾的参数。也就是说,空数组与传入数组的最外层数组合并,然后返回一个新数组。

console.log([])。concat(1,2,3));//[1,2,3]console.log([])。concat([1],[2],[3]);//[1,2,3]console.log([])。concat([[1],[2],[3]));//[[1],[2],[3]]console.log([])。concat([[1],[2],[3]]));//[[[1],[2],[3]]在上面的代码中,从几个数组到一维、二维、三维数组,是逐渐变化的。

在Javascript中调用、应用和绑定方法的详细讲解和总结文章中,提到了apply方法的作用类似于call方法,就是改变这一点(函数执行的范围),然后在指定的范围内调用函数。该功能也会立即执行。唯一的区别是,它在函数执行时接收一个数组作为参数。

apply方法的第一个参数也是由此指向的对象。如果设置为null或undefined或this,则相当于指定了一个全局对象。第二个参数是数组,数组的所有成员依次作为参数使用,调用时传入原函数。原始函数的参数必须在调用方法中逐个添加,但在apply方法中,它们必须以数组形式添加。

console.log([].concat.apply([],[[1],[2],[3]]));//[1,2,3]console.log([])。concat([[1],[2],[3]));//[[1],[2],[3]]从代码中可以看出,首先对空数组调用concat方法,该方法的作用是将新数组的成员添加到原数组的尾部。再次调用apply方法,传入第一个参数,该参数指定执行对象的范围,而第二个参数将数组中的所有成员作为参数一次,并在调用时将它们传递到数组中。

因此,当同时使用concat和apply方法时,两种方法的效果会重叠,这与单独使用concat不同。看一个例子。

console.log([])。concat([1,2,3]);//[1,2,3]console . log([]. concat . apply([],[[1],[2],[3]]));//[1,2,3]console.log([])。concat([[1],[2],[3]));//[[1],[2],[3]]console . log([]. concat . apply([],[[1],[2],[3]]));//[[1],[2],[3]]console.log([])。concat([[1],[2],[3]]));//[[1],[2],[3]]console . log([]. concat . apply([],[[[1],[2],[3]]]));//[[[1],[2],[3]]在上面的代码中,concat方法合并了最多的数组,然后在合并的基础上合并下一级数组。

console.log([].concat.apply([],[[1],[2],[3]]));//[1,2,3]//相当于console.log([])。concat(1,2,3));//[1,2,3]摘要:

1.当单独使用concat方法时,新数组的成员将被添加到原始数组的尾部。

2.当apply方法用于指定concat方法的这个点时,这两种方法的效果将会叠加。

3.合并数组元素的方法:

var flat=function(arr){ return[]. concat . apply([],arr);};var flat=function(array){ return array . reduce(function(a,b)){ return a . concat(b);},[])}以上就是边肖介绍的javascript使用concat方法合并数组的方法,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:javascript使用concat方法合并数组是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。