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 得到当前页面高度和宽度的两个函数
Feb 21 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
使用firebug进行调试javascript的示例
Dec 16 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
微信小程序实现下拉框功能
Jul 16 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
js window.event对象详尽解析
2009/02/17 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
对python 命令的-u参数详解
2018/12/03 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
土建施工员岗位职责
2015/04/11 职场文书
项目投资意向书范本
2015/05/09 职场文书
走近毛泽东观后感
2015/06/04 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS