使用 .some() 和 .every() 数组方法编写更简洁的 JavaScript 代码
它们是如何工作的?
示例
概括
编写简洁易读的代码至关重要,尤其是在与他人合作时。在本文中,我将教你如何使用鲜为人知的数组方法.some()
,并.every()
在你的下一个项目中编写简洁易读的代码。
它们是如何工作的?
这两个函数的工作方式类似。它们的作用是,遍历数组中的每个元素,并检查某个函数(由开发人员定义)是否true
在某些元素或所有元素中返回。
当您需要检查给定数组的某个内容是否为真(或假)时,这是一个很好的用例。
示例
假设以下数组:
const people = [
{ name: 'John', age: 47 },
{ name: 'Martha', age: 89 },
{ name: 'Edward', age: 31 },
{ name: 'Michele', age: 18 }
];
每一个
如果我们想知道数组中的所有人是否forEach
都超过法定年龄(> = 18 岁),我们可以编写以下代码:
let allAboveAge = true // assume they all are above age
people.forEach(person => { // iterate over every item
if(person.age < 18) { // check if below age
allAboveAge = false // at least one is not above age
}
})
上面的代码一开始可能很难理解,因为其他开发人员很难读懂。他们首先必须理解你试图实现的逻辑。
要使用 实现同样的事情.every()
,您可以用一行易于阅读的代码来完成:
const allAboveAge = people.every(person => person.age >= 18)
传递给 -method 的函数应该返回数组中每个元素.every()
需要的结果。(在本例中,返回的是给定时刻被迭代的元素)true
person
一些
.some()
工作原理与 非常相似.every()
。唯一的区别是,它不是检查语句中每个true
项目是否,而是仅检查某些(至少一个!)项目是否true
。
因此,如果您要检查数组是否至少包含一个年龄超过的人,则可以使用以下语句并使用以下.some()
方法进行检查:
const oneOrMoreAboveAge = people.some(person => person.age >= 18)
概括
如您所见,这两种方法的工作方式非常相似,您只需要交换调用的方法,其余部分保持不变。
如果您想测试数组是否有Boolean
结果,这两种方法都是非常方便的小工具。
尝试在下一个适用的项目中使用它,或者看看是否找到一种方法来重构当前项目中的代码,这样可以得到更漂亮、更易读的代码。
照片由Frank Vessia在 Unsplash 上拍摄
文章来源:https://dev.to/themarcba/write-cleaner-javascript-code-with-some-and-every-array-methods-bmb