Array.prototype.concat

简介: Array.prototype.concat

概念


Array.prototype.concat方法将数组实例中的元素与添加一个或多个元素(数组)合并成一个新数组。


语法


arr.concat(element1)

arr.concat(element1, element2)

arr.concat(element1, element2 ... elementN)


参数


  • elementN 指需要合并元素(数组)。


返回值


返回新的数组实例。


描述


  1. 如果element是非数组时,将element添加到新数组当中。
  2. 如果element是数组时,将element中的元素逐一添加到新数组中。


例子


例一、当参数element非数组时


let arr = ['前', '端', '咖'];
let result = arr.concat('手', '册');
console.log(result);  // ['前', '端', '咖', '手', '册']


例二、当参数element是数组时


let arr = ['前', '端', '咖'];
let result = arr.concat(['手', '册']);
console.log(result); // ['前', '端', '咖', '手', '册']


例三、当参数element是多维数组时


let arr = ['前', '端', '咖'];
let result = arr.concat(['手', '册', ['qian', 'duan']]);
console.log(result); // ['前', '端', '咖', '手', '册', ['qian', 'duan']]


例三、当参数element是任意值时


let arr = ['前', '端', '咖'];
let result = ['手', '册', 1, true, { qdk: '前端咖' }];
console.log(result); // ['前', '端', '咖', '手', '册', 1, true, { qdk: '前端咖' }]


例三、当参数element不存在时


let arr = ['前', '端', '咖'];
let result = arr.concat();
console.log(result);  // ['前', '端', '咖']


面试


  1. 聊一聊concatpush的区别?


实现 concat 方法


if (!Array.prototype.concat) {
  Array.prototype.concat = function () {
    let arr = [];
    for (let i = 0, l = this.length; i < l; i++) {
      arr.push(this[i]);
    }
    if (arguments.length) {
      for (let i = 0, l = arguments.length; i < l; i++) {
        let elem = arguments[i];
        if (Object.prototype.toString.call(elem) == '[object Array]') {
          for (let j = 0, jl = elem.length; j < jl; j++) {
            arr.push(elem[i]);
          }
        } else {
          arr.push(elem);
        }
      }
    }
    retun arr;
  };
}

目录
相关文章
|
5月前
|
API 开发者
鸿蒙NEXT-API19获取上下文,在class中和ability中获取上下文,API迁移示例-解决无法在EntryAbility中无法使用最新版API获取上下文
本文介绍了鸿蒙API 16升级后,如何通过UIContext获取上下文及替代已废弃API的方法,包括组件、类和Ability中的使用示例,并提供了promptAction、router等常用API的迁移方案,帮助开发者顺利适配新版系统。
472 0
|
网络安全 开发工具 git
解决fatal:remote error:You can’t push to git://github.com/username/*.g
通过上述诊断与修复步骤,绝大多数的推送错误都能得到有效解决,确保您的Git工作流顺畅无阻。
579 1
|
PHP 开发者
深入理解PHP中的异常处理机制
【9月更文挑战第10天】PHP的异常处理是编程中不可或缺的一部分,它允许开发者优雅地管理错误和意外事件。本文将通过浅显易懂的语言和生动的例子,带你走进PHP异常处理的世界,让你了解如何捕捉和处理异常,以及如何使用这一机制来提升代码的健壮性和可维护性。
|
11月前
|
监控 供应链 数据可视化
跨境电商团队协作办公软件评测!哪几款能挺过节假日高峰?
随着除夕和圣诞节的临近,跨境电商将迎来订单洪峰。本文推荐六款团队协作办公软件,助力电商团队高效应对订单高峰。其中,板栗看板以其清晰的任务管理、便捷的团队协作、精准的数据统计及灵活的自定义功能成为重点推荐对象,同时介绍了Trello、Asana、Monday.com、Wrike和Basecamp五款国外软件,它们分别在简洁直观、精细规划、数据驱动、智能自动化和沟通便捷等方面表现出色。
239 8
跨境电商团队协作办公软件评测!哪几款能挺过节假日高峰?
|
安全 网络安全 网络虚拟化
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
|
Linux 调度 C++
【Linux修炼】11.进程的创建、终止、等待、程序替换(一)
【Linux修炼】11.进程的创建、终止、等待、程序替换(一)
【Linux修炼】11.进程的创建、终止、等待、程序替换(一)
|
消息中间件 弹性计算 前端开发
EDA 事件驱动架构与 EventBridge 二三事
事件驱动型架构 (EDA) 方兴未艾,作为一种 Serverless 化的应用概念对云原生架构具有着深远影响。当我们讨论到一个具体架构时,首当其冲的是它的发展是否具有技术先进性。这里从我们熟悉的 MVC 架构,SOA 架构谈起,聊一聊关于消息事件领域的历史与发展趋势。
503 0
EDA 事件驱动架构与  EventBridge 二三事
|
Go 开发者
switch 基本使用|学习笔记
快速学习 switch 基本使用
switch 基本使用|学习笔记
|
前端开发
#yyds干货盘点# 歌谣学前端之变量
#yyds干货盘点# 歌谣学前端之变量
128 0
csdn写文章如何修改字体颜色
csdn写文章如何修改字体颜色
245 0