JavaScript中的数组迭代方法及实例解析

121 阅读4分钟

JavaScript提供了一些内置的迭代方法,对每个数组元素都起作用。最常用的迭代方法是forEach(), filter(), map(), reduce(), reduceRight(), every(), some(), and find()。在这篇文章中,我们将单独讨论每个方法的工作。

JavaScript forEach()方法

在JavaScript中,forEach()方法针对数组中的每一个元素调用给定的函数。forEach方法需要三个参数,一个是当前元素的值,第二个参数是当前元素的索引,最后一个参数是forEach()方法必须工作的数组。

请看下面的代码,了解forEach()方法的工作原理。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
EmpNames.forEach(PrintNames => {
console.log( "Employee  name : " , PrintNames);
});

在上面给出的代码中,有一个包含五个元素的数组,forEach()方法与该数组一起使用,在浏览器的控制台打印每个雇员的名字。

结果是,forEach()方法将在控制台打印每个元素。

JavaScript filter()方法

JavaScript提供了另一个名为**filter()**的迭代方法,它以一个条件为参数,并返回一个新的数组,其中只有那些满足指定条件的元素。

为了更好地理解JavaScript中的filter方法,让我们举个例子,我们想得到一个名字以 "J "开头的雇员数组的过滤结果。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
const FilteredNames = EmpNames.filter(StringIndex => {
    return StringIndex[0] === "J";
});
console.log("Employee name : " , FilteredNames);

在这个例子中,我们给filter()方法传递了一个条件,以检查每个元素的第一个字母,并返回一个第一个元素等于 "J "的元素的列表。

输出将显示以 "J "开头的雇员的名字。

JavaScript map()方法

JavaScript map()方法在原始数组上迭代地执行一些功能,在不影响原始数组的情况下产生一个新的数组。考虑一个例子,将 "Wilson "这个名字添加到每个雇员的名字中。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
const NewNames = EmpNames.map(AddName => {
    return AddName + " Wilson";
});
console.log("Employees New Names : " , NewNames);

我们返回一个额外的名字 "Wilson "的值,所以它将把这个名字加入数组 "EmpName "的每个元素中。

map()方法的输出将验证它对数组 "EmpNames "的每个元素进行了迭代,并对整个数组执行了同样的功能。

JavaScript reduce()方法

reduce()方法是JavaScript中可用的数组迭代方法,它将整个数组减少到一个值。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
const NewNames = EmpNames.reduce((Name1,Name2 ) => {
    return Name1 + " " + Name2;
});
console.log("Reduced Name : " , NewNames);

在上面的例子中,我们有一个有五个名字的数组,使用reduce()方法,我们把整个数组减少到一个名字,我们给reduce方法传递了两个参数 "Name1 "和 "Name2",我们将对它们应用一些处理,并将它们返回。

上述代码的输出将是一个单一的值。

reduce()方法可以应用于任何数据类型,如字符串、数字和数组。默认情况下,reduce()方法从左到右工作,相反,如果我们想从右到左执行功能,可以利用reduceRight()方法。

JavaScript every()方法

every()方法是JavaScript中的另一个数组迭代方法,它接受一个条件并对每个数组元素进行测试,其结果是返回真或假。

为了理解every()方法在JavaScript中是如何工作的,请看下面的代码。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
const EveryName = EmpNames.every(CheckName => {
    return CheckName[0] === "J";
});
console.log("All names Starts with J : " , EveryName);

在这个例子中,我们利用every()方法来测试数组中所有元素是否以J开头。

every()方法将返回 false ,因为数组中所有的名字都不是以字母 "J "开头。如果数组中所有的名字都是以 "J "开头的,那么输出结果将是true

JavaScript的some()方法

JavaScript some()方法检查数组中的一些元素是否满足给定的条件,并返回结果为真或假。

const EmpNames = ["John", "Seth", "Danial", "Joe", "Micheal"];
const EveryName = EmpNames.some(CheckName => {
    return CheckName[0] === "J";
});
console.log("Some names Starts with J : " , EveryName);

在这个例子中,some()方法检查一些雇员的名字是否以J开头。

在输出中,它将返回true,因为有一些员工的名字是以 "J "开头的。

JavaScript find()方法

JavaScript提供了另一个有用的迭代方法,它只返回满足指定条件的第一个值。如果有一个以上的值符合条件,那么find()方法就不会返回所有的值,而只会返回第一个值。让我们通过一个例子来理解它。

const EmpNames = ["John", "Seth", "Danial", "John", "Micheal"];
const isFoundName = FoundName => {
    return [ "Micheal" , "Seth" ].includes(FoundName);
}
const Result= EmpNames.find(isFoundName);
console.log("Employee Name : ", Result);

在这个例子中,我们想找到名字是 "Micheal "或 "Seth "的雇员。

这里find()方法将在数组中搜索这些名字,它将打印数组中第一个出现的名字。

总结

数组迭代方法是内置的JavaScript方法,可以遍历整个数组,并对数组中的每个条目进行处理。在这篇文章中,我们考虑了一些基本的数组迭代方法,并在JavaScript中实现了这些方法,我们了解了这些方法的工作原理。