js--concat函数

197 阅读1分钟

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]