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 相关文章推荐
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
jquery下checked取值问题的解决方法
Aug 09 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
js实现网页收藏功能
Dec 17 Javascript
JS完成画圆圈的小球
Mar 07 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 Javascript
使用flow来规范javascript的变量类型
Sep 12 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 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版
2016/07/21 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
关于COOKIE个数与大小的问题
2011/01/17 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python基础教程之循环介绍
2014/08/29 Python
Python set集合类型操作总结
2014/11/07 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python学生管理系统学习笔记
2019/03/19 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
python 实现图片裁剪小工具
2021/02/02 Python
python 实现IP子网计算
2021/02/18 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
会计主管岗位职责
2014/01/03 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
主题实践活动总结
2014/05/08 职场文书
班级团队活动方案
2014/08/14 职场文书
年终工作总结范文
2019/06/20 职场文书