concat 是一个合并数组的函数,不改变原数组,返回一个新数组
语法
arr1.concat(arr2,arr3,……,arrx);
// arr2,arr3,……,arrx 必需;要连接到arr1的数组
// 返回值,已经连接的数组
合并两个数组(字符串数组,数字数组等)
var sedan = ["S60", "S90"];
var SUV = ["XC40", "XC60", "XC90"];
var Volvo = sedan.concat(SUV);
合并三个数组
var sedan = ["S60", "S90"];
var SUV = ["XC40", "XC60", "XC90"];
var wagon = ["V60", "V90", "V90CC"];
var Volvo = sedan.concat(SUV, wagon);
类数组对象
concat默认不会将类数组对象识别为数组,仅在 Symbol.isConcatSpreadable 被设置为真值(例如,true)时才会将类数组对象视作数组。
const obj1 = { 0: 1, 1: 2, 2: 3, length: 3 };
const obj2 = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.isConcatSpreadable]: true };
console.log([0].concat(obj1, obj2));
// [ 0, { '0': 1, '1': 2, '2': 3, length: 3 }, 1, 2, 3 ]
上面这两个对象,加了Symbol.isConcatSpreadable被识别为数组。
在稀疏数组中使用
如果任何源数组是稀疏的,则结果数组也将是稀疏的:
console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]