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 基础篇2 数据类型,语句,函数
Mar 14 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
JS定义网页表单提交(submit)的方法
Mar 20 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 Javascript
鸿蒙系统中的 JS 开发框架
Sep 18 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
虫族 ZERG 概述
2020/03/14 星际争霸
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
php显示时间常用方法小结
2015/06/05 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
化工专业推荐信范文
2013/11/28 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
2014年司机工作总结
2014/11/21 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
Python开发简易五子棋小游戏
2022/05/02 Python