JS数组方法concat()用法实例分析


Posted in Javascript onJanuary 18, 2020

本文实例讲述了JS数组方法concat()用法。分享给大家供大家参考,具体如下:

数组方法concat()

  1. concat()可以基于当前数组中的所有项创建一个新数组。即这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。
    没有给concat方法传递参数的情况下,它只是复制当前数组并返回副本。
    如果传递的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中
    如果传递的值是不是数组,这些值会被简单的添加到数组的末尾
    注意:该方法不会改变先后的数组,而仅仅会返回被连接数组的一个副本。

  2. 定义和用法:concat() 方法用于连接两个或多个数组。

  3. 语法:arrayObject.concat(arrayX,arrayX,……,arrayX)
  4. 参数:arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
  5. 返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

方法一:

function connectArray() {
  var result = [];
  var len = 0;
  //获取所有数组的总长度
  for(var i = 0; i < arguments.length; i++) {
    len += arguments[i].length;
  }
  for(var i = 0; i < len; i++) {
    if(i < arguments[0].length) {
      result[result.length] = arguments[0][i];
    }
    else if( i < arguments[1].length + arguments[0].length) {
      result[result.length] = arguments[1][i - arguments[0].length];
    }
    else if(i < arguments[2].length + arguments[1].length + arguments[0].length)
    result[result.length] = arguments[1][i - arguments[0].length- arguments[1].length];
  }
  return result;
}
var arr1 = [1, 2, 3, 4, 5, 6];
var arr2 = ['A', 'B', 'C'];
var arr3 = ['AAA', 'BBB', 'CCC'];
var arr4 = ['Hello', 'World'];
// 连接数组
console.log(connectArray(arr1));
console.log(connectArray(arr1, arr2)); // [1, 2, 3, 4, 5, 6, "A", "B", "C"]
console.log(connectArray(arr1, arr2, arr3)); // [1, 2, 3, 4, 5, 6, "A", "B", "C", "A", "B", "C"]

运行结果:

JS数组方法concat()用法实例分析

方法二:

var arr1 = [1, 2, 3, 4, 5, 6];
var arr2 = ['A', 'B', 'C'];
var arr3 = ['AAA', 'BBB', 'CCC'];
var arr4 = ['Hello', 'World'];
// 以下未考虑复杂情况,仅供参考:
Array.prototype.copyConcat =function() {
  var result = [],
    len = this.length,
    argLen = arguments.length;
  // result = this;  //这样将this的值直接赋值给result不行,因为是将this的引用赋值给result
  //将this的值复制给result
  for(var i = 0; i < this.length; i++) {
    result[result.length] = this[i];
  }
  // 不传递参数
  if(arguments.length == 0) {
    return result;
  }
  // 有参数的时候
  for(var i = 0; i < argLen; i++) {
    if(Array.isArray(arguments[i])) {// 参数是数组项的时候
      for(var j = 0; j < arguments[i].length; j++) {
        result[result.length] = arguments[i][j];
      }
    }
    else { //参数不是数组项的时候
      result[result.length] = arguments[i];
    }
  }
  return result;
};
// 不传递参数
var resultArr1 = arr1.copyConcat(); // [1, 2, 3, 4, 5, 6]
console.log(resultArr1);
// 传递参数但不是数组
console.log(arr1.copyConcat('xxx', 'yyy', 'zzz'));// [1, 2, 3, 4, 5, 6, "xxx", "yyy", "zzz"]
// 传递参数,参数是数组
console.log(arr1.copyConcat(arr2)); // [1, 2, 3, 4, 5, 6, "A", "B", "C"]
console.log(arr1.copyConcat(arr2, arr3, arr4));// [1, 2, 3, 4, 5, 6, "A", "B", "C", "AAA", "BBB", "CCC", "Hello", "World"]
// 传递的参数:字符串、数字和数组
console.log(arr1.copyConcat('参数', '999', arr2, arr3));// [1, 2, 3, 4, 5, 6, "参数", "999", "A", "B", "C", "AAA", "BBB", "CCC"]
console.log(arr1); // 1,2,3,4,5,6

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 开天辟地入门篇一
Dec 09 Javascript
ASP中Sub和Function的区别说明
Aug 30 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
Mar 28 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
windows下更新npm和node的方法
Nov 30 Javascript
使用Vuex解决Vue中的身份验证问题
Sep 28 Javascript
vue 使用v-for进行循环的实例代码详解
Feb 19 Javascript
JS实现纵向轮播图(初级版)
Jan 18 #Javascript
JS数组方法reverse()用法实例分析
Jan 18 #Javascript
JS实现横向轮播图(初级版)
Jun 24 #Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 #Javascript
微信小程序开发中var that =this的用法详解
Jan 18 #Javascript
JavaScript实现滑动门效果
Jan 18 #Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 #Javascript
You might like
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
巧用局部变量提升javascript性能
2014/02/24 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
分享Python字符串关键点
2015/12/13 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python----数据预处理代码实例
2019/03/20 Python
详解Python3 基本数据类型
2019/04/19 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
工程部主管岗位职责
2013/11/17 职场文书
上班迟到检讨书
2014/01/10 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
第一军规观后感
2015/06/12 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
2019个人工作总结
2019/06/21 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
深入理解Vue的数据响应式
2021/05/15 Vue.js
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS