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 必知必会之closure
Sep 21 Javascript
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
javascript语言结构小记(一)
Sep 10 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
Jquery:ajax实现翻页无刷新功能代码
Aug 05 Javascript
javascript实现禁止右键和F12查看源代码
Dec 26 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 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的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python最长公共子串算法实例
2015/03/07 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Django设置Postgresql的操作
2020/05/14 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
行政主管岗位职责
2013/11/18 职场文书
简历中求职的个人自我评价
2013/12/03 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL