一、push()方法
JavaScript的数组对象提供了一个名为push()的方法,可以用于向数组的末尾添加一个或多个元素。
let arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.push(5, 6); // [1, 2, 3, 4, 5, 6]
该方法会直接修改原数组,返回值为添加元素后数组的长度。
二、unshift()方法
除了使用push()方法向数组末尾添加元素外,还可以使用unshift()方法向数组的开头添加元素。
let arr = [2, 3, 4];
arr.unshift(1); // [1, 2, 3, 4]
arr.unshift(-2, -1, 0); // [-2, -1, 0, 1, 2, 3, 4]
该方法同样直接修改原数组,返回值为添加元素后数组的长度。
三、splice()方法
除了在数组末尾或开头添加元素外,还可以通过splice()方法在数组的任意位置添加元素。该方法可以接受多个参数。
- 第一个参数为添加或删除的位置,必需。
- 第二个参数为要删除的元素个数(如果不删除元素,则为0),可选。
- 第三个及以后的参数为要添加的新元素,可选。
let arr = [1, 2, 3];
arr.splice(1, 0, 1.5); // [1, 1.5, 2, 3]
arr.splice(2, 1, 2.5, 2.8); // [1, 1.5, 2.5, 2.8, 3]
该方法同样直接修改原数组,返回值为被删除的元素(如果没有被删除则返回空数组)。
四、concat()方法
concat()方法不会直接修改原数组,而是返回一个新数组,该新数组包含原数组和要添加的元素。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = arr1.concat(arr2); // [1, 2, 3, 4]
五、Array.from()方法
Array.from()方法可以将类数组对象或可迭代对象转换为数组,同时可以传入一个映射函数对数组中的元素进行转换。
let str = 'hello';
let arr = Array.from(str); // ['h', 'e', 'l', 'l', 'o']
如果需要在新数组中添加元素,可以结合push()方法一起使用。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr = Array.from(arr1).concat(arr2); // [1, 2, 3, 4]
六、展开运算符(...)
展开运算符可以将数组或类数组对象(例如arguments对象)中的所有元素展开为一个新数组,同时也可以在展开时添加新元素。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr = [...arr1, ...arr2]; // [1, 2, 3, 4]
在展开时添加新元素:
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
七、Array.push.apply()方法(已废弃)
在ES5中,还可以通过Array.push.apply()方法向数组添加元素。
let arr = [1, 2, 3];
Array.prototype.push.apply(arr, [4, 5]); // [1, 2, 3, 4, 5]
但是,在ES6中,已经可以使用展开运算符来实现同样的效果,因此Array.push.apply()方法已经被废弃。
八、总结
数组是JavaScript中最常用的数据结构之一,添加元素的方式也有多种。选择不同的方式可以根据实际需求来决定,例如在中间位置添加元素时可以使用splice()方法,如果要添加元素的个数较多可以使用concat()方法或展开运算符,如果要添加的元素只有一个可以使用push()方法或unshift()方法。