最近在补不好js知识的时候,总是被js强大的语法震撼。由于前端的疏忽,造成了一些理解上的错误。因此,我们应该改变过去,下定决心。无论做什么,都要有专门研究的精神。
在介绍之前,我问一个问题:如何将多个数组合并成一个数组?
以下共享会话分为以下几个小节:
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([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方法将传入的参数合并成一个空数组。在后半部分,调用了String对象的实例方法apply,它将concat()函数内部的这个指向[],在[],调用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]]摘要:
1.当单独使用concat方法时,新数组的成员将被添加到原始数组的尾部,然后在不改变原始数组的情况下返回一个新数组;如果传入其他类型的值,它们将作为新元素添加到数组的末尾。
2.合并数组元素的方法:
var flat=function(arr){ return[]. concat . apply([],arr);};var flat=function(array){ return array . reduce(function(a,b)){ return a . concat(b);},[])}如果不了解apply方法,可以到本文:Javascript中调用、应用、绑定方法的详细说明和总结
以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!