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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
js 实现数值的千分位及保存小数方法(推荐)
Aug 01 Javascript
canvas实现钟表效果
Feb 13 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
JS排序算法之希尔排序与快速排序实现方法
Dec 12 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 Javascript
vue 判断页面是首次进入还是再次刷新的实例
Nov 05 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
解决中英文字符串长度问题函数
2007/01/16 PHP
PHP 字符串 小常识
2009/06/05 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
Python实现DDos攻击实例详解
2019/02/02 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
2015出纳试用期工作总结
2014/12/12 职场文书
个人道歉信大全
2019/04/11 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
图文详解nginx日志切割的实现
2022/01/18 Servers