JavaScript 数组初学者指南(第 2 部分)

2025-06-07

JavaScript 数组初学者指南(第 2 部分)

大家好!首先,我对这篇文章的前篇所获得的反响感到非常惊喜。真的非常感谢。如果
您是第一次阅读这篇文章,请务必点击此处查看本文的第一部分

我们将针对此帖子考虑以下方法。

  • 减少()
  • 地图()
  • 筛选()
  • 种类()

让我们开始吧。

首先,让我们定义一个(或两个)用于此目的的数组。


// Array 1

const students = [

{firstname: 'Tammy', lastname:'Benjamin', admitted: 2011, graduation: 2014},
{firstname: 'Deborah', lastname:'Emeni', admitted: 2017, graduation: 2021},
{firstname: 'Daniel', lastname:'Oke', admitted: 2009, graduation: 2012},
{firstname: 'Ogurinka', lastname:'Benjamin', admitted: 2012, graduation: 2016},
{firstname: 'Nelson', lastname:'Abel', admitted: 2017, graduation: 2021},
{firstname: 'Ellie', lastname:'Julie', admitted: 2013, graduation: 2017},

];


// Array 2

const teachers = [

'Stephen', 'Richard', 'Biodun', 'Ruth',
'Peter', 'Paul', 'John', 'Jacob', 'Chris',
'Emeka', 'Nicole', 'Jaden', 'Albert',

];

Enter fullscreen mode Exit fullscreen mode

数组 1 包含一个对象数组(在此处阅读有关对象的信息),其中指定了姓名、入学年份和毕业年份。

数组 2 保存了教师的基本数组。

假设我们想从数组中获取 2017 年录取的学生名单,这可以使用filter()方法实现

filter() 方法是什么?

filter() 方法创建一个新数组,其中包含通过测试的数组元素。这对于访问对象属性非常有用。如果当前元素通过条件,则会将其发送到新数组。
在上面的练习中,我们想要获取对象数组中特定属性的值,在本例中,我们获取的是 2017 年录取的所有学生。

代码:


const admittedIn2017 = students.filter(function(student) {

if (student.admitted === 2017) {
return true;

}

});

console.log(admittedIn2017);


Enter fullscreen mode Exit fullscreen mode

解释:

上面的代码遍历了整个数组,检查所有出现 admit 值为 2017 的情况,然后返回一个对象并显示在控制台上。
我们获取 students 数组并对其进行过滤。filter 方法接受一个带有参数的函数。我们使用此参数引用对象中的属性(在本例中为“admitted”),然后设置条件。每次满足条件时,函数都返回 true。

挑战:

作为个人挑战,添加更多数组项并尝试返回在一定年份范围内(例如 2012 年至 2021 年之间)毕业的每个学生

地图()

假设您想要获取数组中每个学生的名字和入学年份,我们可以使用map()方法实现这一点。

map () 方法通过对每个数组元素执行函数来创建一个新数组。在我们的例子中,我们想要获取每个学生的名字和毕业年份。
需要注意的是,新数组的长度与原始数组的长度相同。

代码:


const firstNameAndGradYear = students.map(function(student) {

return student.firstname + " " + student.graduation;

});


console.log(firstNameAndGradYear);

Enter fullscreen mode Exit fullscreen mode

解释:

在这里,我们遍历学生数组并返回每个对象的“firstname”和“graduation”的值,然后将其显示到我们的控制台。

挑战:

尝试返回每个学生的姓氏和名字。(很简单)

种类()

sort()方法根据特定条件对数组进行排序并返回一个新数组。

假设我们想根据学生的毕业年份对他们进行排序

代码:


 const aphabetically = students.sort(function(a, b) {

if (a.firstname > b.firstname) {

  return 1;
}
else {

return -1;
}

});


console.log (aphabetically);



Enter fullscreen mode Exit fullscreen mode

解释:

上面的代码遍历了学生数组并比较了所有名字。它检查学生数组并根据名字的字母顺序对其进行排序。它接受两个参数 (a,b),并根据字母顺序上下移动数组。

挑战:

尝试根据毕业年份顺序对数组进行排序。

减少()

reduce ()方法对每个数组元素运行一个函数,将其减少为单个值。

为了更好地理解这一点,我们将尝试验证我们数组中的所有学生将在学校度过多少年。

代码:


const yearInSchool = students.reduce(function(total, student) {


return total + (student.graduation - student.admitted)


}, 0);

console.log(yearInSchool);

Enter fullscreen mode Exit fullscreen mode

解释:

我们遍历数组,并输出数组中所有学生在校的总年数。这里的“total”参数用作累加器,我们为其分配初始值 0,每次遍历数组时,都会返回数学运算的结果(student.graduation - student.admitted)。您可以点击此处了解更多关于它及其工作原理的信息!

挑战:

尝试计算 2021 年毕业的学生将在学校度过的年数

附加数组方法

还有一些其他数组方法在不同场景下也很有用

到字符串()

这会将数组转换为字符串。

用法:(使用我们的教师阵列)


teachers.toString() // Converts the teachers array to string separated by a comma


Enter fullscreen mode Exit fullscreen mode

加入()

它的行为就像 toString(),但此外你还可以指定分隔符

用法:


teachers.join('/'); // Converts the teachers array to string separated by a forward slash

Enter fullscreen mode Exit fullscreen mode

每一个()

every() 方法检查所有数组值是否通过测试。

示例:使用我们的学生数组

例如,我们将尝试检查所有学生的入学年份是否大于 2011


const greaterThan2011 = students.every(function(student) {
return student.admitted >= 2011;
});
console.log(greaterThan2011); // will return false


Enter fullscreen mode Exit fullscreen mode

一些()

some() 方法检查某些数组值是否通过测试。

示例:使用我们的学生数组


const greaterThan2011 = students.some(function(student) {
return student.admitted >= 2011;
});
console.log(greaterThan2011); // will return true


Enter fullscreen mode Exit fullscreen mode

寻找()

find() 方法返回通过测试函数的第一个数组元素的值

示例:使用我们的学生数组


const greaterThan2011 = students.find(function(student) {
return student.admitted >= 2011;
});
console.log(greaterThan2011);


Enter fullscreen mode Exit fullscreen mode

索引()

indexOf() 方法在数组中搜索元素值并返回其位置。它接受两个参数:要搜索的元素(必需)以及搜索的起始位置。负值将从给定位置开始,从末尾开始计数,并搜索到末尾(可选)。

示例:使用我们的教师数组


console.log(teachers.indexOf("Biodun")); // returns 2

Enter fullscreen mode Exit fullscreen mode

lastIndexOf()

这与 indexOf() 相同,但返回指定元素最后一次出现的位置。

包括()

includes() 方法判断数组是否包含指定元素。

示例:使用我们的教师数组


console.log(teachers.includes("Biodun")); // returns true

Enter fullscreen mode Exit fullscreen mode

概括

根据你打算完成的任务,你会发现还有几十种有用的数组方法。我花了一些时间列出了一些我曾经使用过的方法,希望你能从中有所收获。谢谢。

文章来源:https://dev.to/ogurinkaben/beginner-s-guide-to-javascript-arrays-part-2-411p
PREV
每个前端开发人员都应该考虑学习的设计工具以提高工作效率结论
NEXT
Elysia:Bun-first Web 框架