使用 'some()' 和 'every()' 进行 Javascript 数组迭代
如果你的代码中使用了数组,那么你很可能需要遍历数组中的值。有几种方法可以做到这一点,根据你想要实现的目标,有些方法比其他方法更好、更高效。
在这篇文章中,我将重点介绍两种方法:some()和every()。
some()
该some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试。它逐个检查元素,如果找到一个函数返回真值的数组元素,则some()返回 true ,true不再检查其余元素。否则,返回 false false。
假设你想检查某个联系人是否存在于你的联系人列表中:
const contacts = ['Stewie', 'Meg', 'Quagmire', 'Cleveland'];
function checkContacts(arr, val) {
return arr.some(arrVal => val === arrVal);
}
checkContacts(contacts, 'Lois'); // false
checkContacts(contacts, 'Meg'); // true
检查是否匹配时Lois,它会从数组的末尾some()开始检查所有元素,如果没有找到匹配项,则返回。检查是否匹配时,它会在遇到 时停止并返回,忽略其余元素。StewiefalseMegMegtrue
every()
此方法测试数组中的所有元素是否都通过了所提供函数实现的测试。它逐个检查元素,如果找到一个函数返回假值的数组元素,则every()返回false,false不再检查其余元素。否则,返回 false true。
让我们检查一下联系人列表中所有姓名是否都超过 3 个字符:
['Stewie', 'Meg', 'Quagmire', 'Cleveland'].every(contact => contact.length >= 4); // false
['Stewie', 'Megan', 'Quagmire', 'Cleveland'].every(contact => contact.length >= 4); // true
第一个测试返回 true,false因为数组中Meg只有 3 个字符。记住:对于 `is` every(),数组中的所有元素都必须为真值才能返回 true true。因此,在第二个测试中将 `is` 改为 `is` 会返回Megtrue 。Megantrue
如果您需要执行与上述类似的任务,这两种方法会很有帮助。当然,它们并非唯一的方法。希望对大家有所帮助!:)
文章来源:https://dev.to/wangonya/javascript-array-iteration-with-some-and-every-4i87