概念
Array.prototype.concat方法将数组实例中的元素与添加一个或多个元素(数组)合并成一个新数组。
语法
arr.concat(element1)
arr.concat(element1, element2)
arr.concat(element1, element2 ... elementN)
参数
- elementN 指需要合并元素(数组)。
返回值
返回新的数组实例。
描述
- 如果
element
是非数组时,将element
添加到新数组当中。 - 如果
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); // ['前', '端', '咖']
面试
- 聊一聊
concat
与push
的区别?
实现 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; }; }