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 相关文章推荐
JavaScript中为元素加上name属性的方法
May 09 Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
Apr 27 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
Sep 03 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 Javascript
el-table树形表格表单验证(列表生成序号)
May 31 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
强制设为首页代码
2006/06/19 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
python实现线程池的方法
2015/06/30 Python
用python实现对比两张图片的不同
2018/02/05 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python字符串常用方法
2018/06/14 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
python plotly绘制直方图实例详解
2019/07/22 Python
如何基于Python实现数字类型转换
2020/02/07 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
浅析Python迭代器的高级用法
2020/07/16 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
先进集体事迹材料
2014/02/17 职场文书
学校花圃的标语
2014/06/18 职场文书
工商局个人工作总结
2015/03/03 职场文书
音乐会主持人开场白
2015/05/28 职场文书
公司档案管理制度
2015/08/05 职场文书
Python实现照片卡通化
2021/12/06 Python