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

公众号

posted @ 2023-01-19 08:26  前端咖  阅读(54)  评论(0编辑  收藏  举报