Array.prototype.concat
概念
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;
};
}