ES5 和 ES6 数组的操作方法
数组是 JavaScript 中非常重要的数据结构之一,能够帮助开发者存储和管理多个数据。随着 ES5 和 ES6 的发展,JavaScript 对数组的操作方法也得到了丰富和增强。本篇文章将介绍 ES5 和 ES6 中的数组操作方法,并举出相关的案例和实际场景。
目录
-
ES5 中数组的常用方法 2.1. push() 2.2. pop() 2.3. shift() 2.4. unshift() 2.5. concat() 2.6. join() 2.7. slice() 2.8. splice() 2.9. forEach() 2.10. map() 2.11. filter() 2.12. reduce() 2.13. some() 2.14. every()
-
ES6 新增的数组方法 3.1. find() 3.2. findIndex() 3.3. includes() 3.4. from() 3.5. of() 3.6. copyWithin() 3.7. fill() 3.8. keys(), values() 和 entries()
1. 数组的基本操作
数组是存储多个值的容器,每个值都可以通过索引来访问。JavaScript 中的数组是动态的,可以随时扩展或缩减。下面我们来看看数组的基本操作。
1.1. 创建数组
ES5 创建数组的方法很简单,可以使用 []
或者 new Array()
来创建。
javascriptCopy Code// 使用字面量创建数组
var arr1 = [1, 2, 3, 4, 5];
// 使用构造函数创建数组
var arr2 = new Array(1, 2, 3, 4, 5);
1.2. 访问数组元素
可以通过数组的索引来访问数组中的元素,索引从 0
开始。
javascriptCopy Codevar arr = [10, 20, 30, 40];
// 访问数组元素
console.log(arr[0]); // 输出 10
console.log(arr[2]); // 输出 30
1.3. 修改数组元素
可以直接通过索引来修改数组中的元素。
javascriptCopy Codevar arr = [10, 20, 30, 40];
// 修改数组元素
arr[1] = 25;
console.log(arr); // 输出 [10, 25, 30, 40]
1.4. 数组长度
length
属性返回数组的元素个数,注意:它是一个可变的属性,如果修改数组的长度,数组内容也会发生变化。
javascriptCopy Codevar arr = [1, 2, 3, 4];
console.log(arr.length); // 输出 4
// 修改数组长度
arr.length = 2;
console.log(arr); // 输出 [1, 2]
2. ES5 中数组的常用方法
2.1. push()
push()
方法向数组的末尾添加一个或多个元素,并返回新数组的长度。
javascriptCopy Codevar arr = [1, 2, 3];
arr.push(4, 5);
console.log(arr); // 输出 [1, 2, 3, 4, 5]
2.2. pop()
pop()
方法删除数组的最后一个元素,并返回该元素。
javascriptCopy Codevar arr = [1, 2, 3];
var lastElement = arr.pop();
console.log(lastElement); // 输出 3
console.log(arr); // 输出 [1, 2]
2.3. shift()
shift()
方法删除数组的第一个元素,并返回该元素。
javascriptCopy Codevar arr = [1, 2, 3];
var firstElement = arr.shift();
console.log(firstElement); // 输出 1
console.log(arr); // 输出 [2, 3]
2.4. unshift()
unshift()
方法向数组的开头添加一个或多个元素,并返回新数组的长度。
javascriptCopy Codevar arr = [2, 3];
arr.unshift(1);
console.log(arr); // 输出 [1, 2, 3]
2.5. concat()
concat()
方法用于合并两个或多个数组,返回一个新数组。
javascriptCopy Codevar arr1 = [1, 2];
var arr2 = [3, 4];
var result = arr1.concat(arr2);
console.log(result); // 输出 [1, 2, 3, 4]
2.6. join()
join()
方法将数组的所有元素转换为一个字符串,并返回该字符串。可以传入一个分隔符。
javascriptCopy Codevar arr = ['a', 'b', 'c'];
var result = arr.join('-');
console.log(result); // 输出 'a-b-c'
2.7. slice()
slice()
方法返回数组的一个浅拷贝,可以指定起始和结束索引。
javascriptCopy Codevar arr = [1, 2, 3, 4, 5];
var result = arr.slice(1, 4);
console.log(result); // 输出 [2, 3, 4]
2.8. splice()
splice()
方法用于删除、替换或添加数组元素。
javascriptCopy Codevar arr = [1, 2, 3, 4];
arr.splice(1, 2, 'a', 'b');
console.log(arr); // 输出 [1, 'a', 'b', 4]
2.9. forEach()
forEach()
方法对数组的每一项执行给定的函数。
javascriptCopy Codevar arr = [1, 2, 3, 4];
arr.forEach(function(item) {
console.log(item);
});
2.10. map()
map()
方法返回一个新数组,数组中的每一项是原数组调用函数处理后的结果。
javascriptCopy Codevar arr = [1, 2, 3];
var result = arr.map(function(item) {
return item * 2;
});
console.log(result); // 输出 [2, 4, 6]
2.11. filter()
filter()
方法创建一个新数组,包含所有通过测试的元素。
javascriptCopy Codevar arr = [1, 2, 3, 4, 5];
var result = arr.filter(function(item) {
return item > 3;
});
console.log(result); // 输出 [4, 5]
2.12. reduce()
reduce()
方法对数组中的每一项执行一个函数,最终返回一个值。
javascriptCopy Codevar arr = [1, 2, 3, 4];
var result = arr.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(result); // 输出 10
2.13. some()
some()
方法测试数组中的某些元素是否通过测试,返回一个布尔值。
javascriptCopy Codevar arr = [1, 2, 3, 4];
var result = arr.some(function(item) {
return item > 3;
});
console.log(result); // 输出 true
2.14. every()
every()
方法测试数组中的所有元素是否都通过测试,返回一个布尔值。
javascriptCopy Codevar arr = [1, 2, 3, 4];
var result = arr.every(function(item) {
return item < 5;
});
console.log(result); // 输出 true
3. ES6 新增的数组方法
ES6 引入了许多新的数组操作方法,这些方法进一步增强了 JavaScript 的数组处理能力。
3.1. find()
`find