您好,登录后才能下订单哦!
在ES6(ECMAScript 2015)中,JavaScript引入了许多新的特性和方法,使得数组的操作更加方便和高效。本文将详细介绍ES6中用于迭代数组的各种方法,包括它们的用法、特点以及适用场景。
forEach 方法forEach 是ES5中引入的数组迭代方法,但在ES6中仍然广泛使用。它允许你对数组中的每个元素执行一个回调函数。
const array = [1, 2, 3, 4, 5];
array.forEach((element, index, array) => {
console.log(`Element: ${element}, Index: ${index}, Array: ${array}`);
});
forEach 不会返回任何值,它只是对数组中的每个元素执行回调函数。break 或 continue 来中断循环。map 方法map 方法创建一个新数组,其结果是该数组中的每个元素调用一次提供的回调函数后的返回值。
const array = [1, 2, 3, 4, 5];
const newArray = array.map((element, index, array) => {
return element * 2;
});
console.log(newArray); // [2, 4, 6, 8, 10]
map 返回一个新数组,原数组不会被修改。undefined。filter 方法filter 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
const array = [1, 2, 3, 4, 5];
const newArray = array.filter((element, index, array) => {
return element % 2 === 0;
});
console.log(newArray); // [2, 4]
filter 返回一个新数组,原数组不会被修改。true 或 false,决定元素是否包含在新数组中。reduce 方法reduce 方法对数组中的每个元素执行一个由你提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。
const array = [1, 2, 3, 4, 5];
const sum = array.reduce((accumulator, currentValue, index, array) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 15
reduce 返回一个累加的结果,可以是任何类型的值。initialValue),如果不指定,则使用数组的第一个元素作为初始值。reduceRight 方法reduceRight 方法与 reduce 类似,但它从数组的末尾开始向前执行。
const array = [1, 2, 3, 4, 5];
const sum = array.reduceRight((accumulator, currentValue, index, array) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 15
reduceRight 从数组的末尾开始向前执行,适用于需要从右到左处理的场景。reduce 相同。every 方法every 方法测试数组中的所有元素是否都通过了指定函数的测试。
const array = [1, 2, 3, 4, 5];
const allEven = array.every((element, index, array) => {
return element % 2 === 0;
});
console.log(allEven); // false
every 返回一个布尔值,表示数组中的所有元素是否都满足条件。every 返回 true。some 方法some 方法测试数组中是否至少有一个元素通过了指定函数的测试。
const array = [1, 2, 3, 4, 5];
const hasEven = array.some((element, index, array) => {
return element % 2 === 0;
});
console.log(hasEven); // true
some 返回一个布尔值,表示数组中是否至少有一个元素满足条件。some 返回 false。find 方法find 方法返回数组中满足提供的测试函数的第一个元素的值。如果没有找到,则返回 undefined。
const array = [1, 2, 3, 4, 5];
const found = array.find((element, index, array) => {
return element > 3;
});
console.log(found); // 4
find 返回数组中第一个满足条件的元素,如果没有找到则返回 undefined。findIndex 方法findIndex 方法返回数组中满足提供的测试函数的第一个元素的索引。如果没有找到,则返回 -1。
const array = [1, 2, 3, 4, 5];
const foundIndex = array.findIndex((element, index, array) => {
return element > 3;
});
console.log(foundIndex); // 3
findIndex 返回数组中第一个满足条件的元素的索引,如果没有找到则返回 -1。entries 方法entries 方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的键值对。
const array = ['a', 'b', 'c'];
const iterator = array.entries();
for (const [index, element] of iterator) {
console.log(`Index: ${index}, Element: ${element}`);
}
entries 返回一个迭代器对象,可以使用 for...of 循环遍历。keys 方法keys 方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的键。
const array = ['a', 'b', 'c'];
const iterator = array.keys();
for (const key of iterator) {
console.log(`Key: ${key}`);
}
keys 返回一个迭代器对象,可以使用 for...of 循环遍历。values 方法values 方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的值。
const array = ['a', 'b', 'c'];
const iterator = array.values();
for (const value of iterator) {
console.log(`Value: ${value}`);
}
values 返回一个迭代器对象,可以使用 for...of 循环遍历。Symbol.iterator 方法Symbol.iterator 是ES6中引入的一个内置符号,用于定义对象的默认迭代器。数组默认实现了 Symbol.iterator 方法,因此可以直接使用 for...of 循环遍历数组。
const array = ['a', 'b', 'c'];
for (const element of array) {
console.log(`Element: ${element}`);
}
Symbol.iterator 是数组的默认迭代器,可以直接使用 for...of 循环遍历数组。for...of 循环遍历数组并获取每个元素。Array.from 方法Array.from 方法从一个类似数组或可迭代对象创建一个新的数组实例。
const arrayLike = { length: 3, 0: 'a', 1: 'b', 2: 'c' };
const array = Array.from(arrayLike);
console.log(array); // ['a', 'b', 'c']
Array.from 可以将类数组对象或可迭代对象转换为真正的数组。arguments 对象或 NodeList 转换为数组。Array.of 方法Array.of 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
const array = Array.of(1, 2, 3, 4, 5);
console.log(array); // [1, 2, 3, 4, 5]
Array.of 创建一个新数组,参数的数量和类型不影响数组的创建。Array.prototype[@@iterator] 方法Array.prototype[@@iterator] 是数组的默认迭代器方法,与 Symbol.iterator 相同。
const array = ['a', 'b', 'c'];
const iterator = array[Symbol.iterator]();
for (const element of iterator) {
console.log(`Element: ${element}`);
}
Array.prototype[@@iterator] 是数组的默认迭代器方法,可以直接使用 for...of 循环遍历数组。for...of 循环遍历数组并获取每个元素。Array.prototype.includes 方法Array.prototype.includes 方法判断一个数组是否包含一个指定的值,根据情况返回 true 或 false。
const array = [1, 2, 3, 4, 5];
const includesThree = array.includes(3);
console.log(includesThree); // true
includes 返回一个布尔值,表示数组是否包含指定的值。Array.prototype.flat 方法Array.prototype.flat 方法创建一个新数组,其中所有子数组元素递归地连接到指定深度。
const array = [1, [2, [3, [4, 5]]];
const flattened = array.flat(2);
console.log(flattened); // [1, 2, 3, [4, 5]]
flat 返回一个新数组,原数组不会被修改。Array.prototype.flatMap 方法Array.prototype.flatMap 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。
const array = [1, 2, 3, 4, 5];
const flatMapped = array.flatMap((element) => [element * 2]);
console.log(flatMapped); // [2, 4, 6, 8, 10]
flatMap 返回一个新数组,原数组不会被修改。map 和 flat 的组合,但只能扁平化一层。Array.prototype.copyWithin 方法Array.prototype.copyWithin 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。
const array = [1, 2, 3, 4, 5];
array.copyWithin(0, 3, 5);
console.log(array); // [4, 5, 3, 4, 5]
copyWithin 修改原数组,不会改变数组的长度。Array.prototype.fill 方法Array.prototype.fill 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。
const array = [1, 2, 3, 4, 5];
array.fill(0, 2, 4);
console.log(array); // [1, 2, 0, 0, 5]
fill 修改原数组,不会改变数组的长度。Array.prototype.sort 方法Array.prototype.sort 方法对数组的元素进行排序,并返回数组。
const array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
array.sort((a, b) => a - b);
console.log(array); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
sort 修改原数组,返回排序后的数组。Array.prototype.reverse免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。