时间:2021-05-26
定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)参数 描述 arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 返回值
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组
。
我们有两个这样的数组
var arr1 = [1,2,3];var arr2 = [4,5,6];任务:合并成这样,请至少提供两种思路。
var arr1 = [1,2,3,4,5,6];思路一:我们可以把第二个数组里面的值挨个添加到第一个数组的末尾。
1:数组怎么添加内容 ?[] || push || shift
2:怎么向数组最后一个索引添加值? push || [数组.length]
3:怎么挨个向数组一添加内容? for
4: for循环多少次? 你要添加多少就循环多少次,也就是arr2的长度
5: 要添加什么内容?arr2里面的值,怎么获取,arr[?]
代码实现:
var arr1 = [1,2,3];var arr2 = [4,5,6];for(var i=0;i<arr2.length;i++){arr1.push(arr2[i]);}console.log(arr1); //[1, 2, 3, 4, 5, 6]问题来了,原生js提供的concat方法不会修改原数组(arr1)的内容,而是返回一个新数组。
分析:既然是要返回值,那我们可以定义一个函数,然后再定义一个变量,这个变量来接收我们添加好的值,但是我们会一个问题,那就是不能在arr1上面push内容了,不然还是会修改原数组的内容。于是我觉得要把原数组复制一份,但是又有一个问题,就是对象是引用类型,简单来说虽然我们可以把数组1复制到一个变量中,但是如果我用push或者[]的形式修改里面的值,或者添加,那么我们的原数组也会被修改,(如果你不知道什么是引用类型,可以去看我博客的第一页或者在第二页)这不是我们想要的结果,但是我们必须复制一份arr1。此时你有什么解决方法?
解决数组引用问题:
for(var i=0;i<arr1.length;i++){arr3[i] = arr1[i];}我的思路是把数组1的值挨个的添加到arr3这个数组中,此时的arr3是这样的
console.log(arr3) //[1, 2, 3]任务:在这个新的数组arr3中添加arr2的所以值,方法和第一步一样,如果忘记了回头看看。
代码实现:
var arr1 = [1,2,3];var arr2 = [4,5,6];var arr3 = [];for(var i=0;i<arr1.length;i++){arr3[i] = arr1[i];}for(var i=0;i<arr2.length;i++){arr3.push(arr2[i]);}console.log(arr3);问题:虽然这个已经实现了数组的合并,但是我每次合并都要重新写一份,那样太麻烦,于是我们得想个办法把它封装成一个函数,下次我们要用的时候调用它就行。
var arr1 = [1,2,3];var arr2 = [4,5,6,7];function Concat(arr1,arr2){var arr3 = [];for(var i=0;i<arr1.length;i++){arr3[i] = arr1[i];}for(var i=0;i<arr2.length;i++){arr3.push(arr2[i]);}return arr3;}console.log(Concat(arr1,arr2));思路二:
分析:把arr1和arr2都转换成字符串,然后将这两段字符串相加得到一个组合,然后再把这个字符串转成数组。
代码实现:
var arr1 = [1,2,3];var arr2 = [4,5,6,7,8,9];var arr3 = (arr1.join(",")+","+arr2.join(",")).split(",");出了点小问题,这个这个数组里面的值是字符串了。
["1", "2", "3", "4", "5", "6", "7", "8", "9"]
解决思路:遍历这个数组,挨个把他们转换成数字。
var arr1 = [1,2,3];var arr2 = [4,5,6,7,8,9];var arr3 = (arr1.join(",")+","+arr2.join(",")).split(",");for(var i=0;i<arr3.length;i++){arr3[i] = +arr3[i];}console.log(arr3);课外扩展:继承版
var arr1 = [1,2,3];var arr2 = [4,5,6,7,8,9];Array.prototype.Concat = function(arr){var arr3 = [];for(var i=0;i<this.length;i++){arr3[i] = this[i];}for(var i=0;i<arr.length;i++){arr3.push(arr[i]);}return arr3;}console.log(arr1.Concat(arr2));以上所述是小编给大家介绍的JavaScript模拟数组合并concat的相关知识,希望对大家有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1数组合并1.1concat方法vara=[1,2,3],b=[4,5,6];varc=a.concat(b);console.log(c);//1,2,3,4
本文实例讲述了JS数组合并push与concat区别。分享给大家供大家参考,具体如下:注意concat拼写,二者功能很相像,但有两点区别。先看代码:vararr
合并两个数组-concat()源代码:​点击按钮合并数组。​点我​functionmyFunction(){varhege=
concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。array1.concat([item1[,item2[,...[,itemN]]]]
下面介绍一下如何使用简单的JS代码让多个数组合并。//第一种方法vara=[1,2,3];alert(a.concat([4,5]));//第二种方法var