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;
  };
}

目录
相关文章
|
3月前
实现array.slice()方法
实现array.slice()方法
|
3月前
|
存储 机器学习/深度学习 JavaScript
array
array
15 2
|
3月前
|
JavaScript 前端开发
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
55 1
|
3月前
|
JavaScript
Array concat()
Array concat()
78 0
|
前端开发 索引
Array.prototype.at
Array.prototype.at
68 0
|
JavaScript 前端开发
Array类型【call】
Array类型【call】
64 0
|
索引
Array.forEach()
Array.forEach()
73 0
|
索引
Array.prototype.flatMap()
Array.prototype.flatMap()
77 0
Array.prototype.flat()
Array.prototype.flat()
73 0
|
存储
Array
Array
131 0