检测数组
如何检测一个变量是否为数组?在 JavaScript 中,可以使用 Array.isArray() 方法来检测一个对象是否为数组:
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
创建数组
在 JavaScript 中,可以使用字面量语法或构造函数的方式来创建一个数组:
// 使用字面量语法来创建数组
let arr1 = [1, 2, 3];
// 使用构造函数来创建数组
let arr2 = new Array(1, 2, 3);
Array.from() 方法
let obj = { length: 3, 0: 'a', 1: 'b', 2: 'c' };
let arr = Array.from(obj);
console.log(arr); // [ 'a', 'b', 'c' ]
访问和修改数组元素
在 JavaScript 中,可以使用下标 operator(方括号 [])来访问和修改数组元素,下标从 0 开始:
let arr = [1, 2, 3];
console.log(arr[0]); // 1
arr[0] = 10;
console.log(arr); // [10, 2, 3]
添加和删除数组元素
可以使用 push() 和 pop() 方法向数组末尾添加和删除元素,
let arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [1, 2, 3, 4]
arr.pop();
console.log(arr); // [1, 2, 3]
使用 unshift() 和 shift() 方法向数组开头添加和删除元素:
let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
arr.shift();
console.log(arr); // [1, 2, 3]
另外,还可以使用 splice() 方法向数组的任意位置添加和删除元素:
let arr = [1, 2, 3];
arr.splice(1, 0, 4);
console.log(arr); // [1, 4, 2, 3]
arr.splice(2, 1);
console.log(arr); // [1, 4, 3]
arr.splice(1, 1, 2, 2);
console.log(arr); // [1, 2, 2, 3]
迭代和遍历数组
有多种方式对数组进行迭代和遍历,其中最常用的是 for 循环、forEach() 方法、map() 方法和 reduce() 方法:
let arr = [1, 2, 3];
// 使用 for 循环迭代数组
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
// 使用 forEach() 方法遍历数组
arr.forEach(function(item, index, array) {
console.log(item);
});
// 使用 map() 方法对数组中每个元素进行映射
let newArr = arr.map(function(item, index, array) {
return item * 2;
});
console.log(newArr); // [2, 4, 6]
// 使用 reduce() 方法对数组进行累加求和
let sum = arr.reduce(function(prev, curr, index, array) {
return prev + curr;
}, 0);
console.log(sum); // 6
排序和搜索数组元素
可以使用 sort() 方法对数组进行排序,使用 indexOf()、lastIndexOf()、find() 和 findIndex() 方法进行搜索:
let arr = [3, 1, 4, 2, 5];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr); // [1, 2, 3, 4, 5]
let index = arr.indexOf(2);
console.log(index); // 1
let lastIndex = arr.lastIndexOf(3);
console.log(lastIndex); // 2
let found = arr.find(function(item) {
return item > 2;
});
console.log(found); // 3
let foundIndex = arr.findIndex(function(item) {
return item > 2;
});
console.log(foundIndex); // 2
数组的过滤和查找
可以使用 filter() 方法进行数组的过滤和查找,使用 find() 和 findIndex() 方法进行查找:
let arr = [1, 2, 3, 4, 5];
let even = arr.filter(function(item) {
return item 2 === 0;
});
console.log(even); // [2, 4]
let found = arr.find(function(item) {
return item > 2;
});
console.log(found); // 3
let foundIndex = arr.findIndex(function(item) {
return item > 2;
});
console.log(foundIndex); // 2
数组的拷贝和合并
有多种方式对数组进行拷贝和合并,其中最常用的是 slice() 方法和 concat() 方法:
let arr1 = [1, 2, 3];
let arr2 = arr1.slice();
arr2.push(4);
console.log(arr1); // [1, 2, 3]
console.log(arr2); // [1, 2, 3, 4]
let arr3 = [4, 5, 6];
let arr4 = arr1.concat(arr3);
console.log(arr4); // [1, 2, 3, 4, 5, 6]
此外,ES6 新增了扩展运算符(...)的语法,可以方便地将数组展开为多个参数或合并多个数组:
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = [...arr1, ...arr2];
console.log(arr3); // [1, 2, 3, 4, 5, 6]