Array.every() 和 是方便的JavaScript数组方法,可以帮助你根据指定的标准测试一个数组。在这篇文章中,我们将快速学习如何使用它们。Array.some()
Array.every()
Array.every 需要一个回调函数作为参数。如果该函数对数组中的每个项目都返回 , ,则返回真。让我们来检查一下。true Array.every
function test(el) {
return el < 10;
}
[1, 2, 3, 4, 5, 6].every(test);
// true
由于数组中的每个项目都小于10,Array.every 方法返回true 。
将匿名箭头函数直接传递给every 方法是很常见的,所以让我们这样做来看看一个更熟悉的语法。
[1, 2, 3, 4, 5, 6].every((el) => el < 10);
// true
让我们看看另一个例子。这一次它会失败,因为不是每个元素都会通过测试。
[1, 2, 3, 4, 5, 6].every((el) => el < 5);
// false
这里发生的一件好事是,它不仅会失败,而且一旦有元素没有通过测试,它就会提前退出。这意味着它甚至不会对数组的最后一个元素运行测试。
Array.some()
Array.some 方法测试数组中是否至少有一个元素通过测试。这一次,我们从一个失败的例子开始。
[1, 2, 3, 4, 5, 6].some((el) => el > 10);
// false
因为没有一个元素大于10,所以Array.some ,在测试完每个元素后返回false 。
现在是一个返回true 的情景。
[1, 2, 3, 4, 5, 6].some((el) => el > 3);
// true
它不仅返回true ,而且只要第一个元素通过测试,就会返回真。在这种情况下,由于数字4 通过了测试,5 和6 甚至没有被测试。
其他功能
现在我们大致知道了every 和some 方法的工作原理,下面是你可以从它们那里得到的一些额外功能。
Array.every和Array.some可以接受第二个参数,该参数将在回调函数的执行中作为this使用。- 回调函数可以接受两个额外的参数:当前项的索引和对调用该方法的数组的引用。
让我们把所有这些额外的功能塞进一个例子。
const obj = { name: 'Daffodil' };
[1, 2, 3, 4, 5, 6].every(function (el, i, arr) {
return el > i && arr[i] === el && this === obj;
}, obj);
// true
那么,为什么这是真的呢?
- 每个元素都比它的索引大
arr[i](其中 是当前索引`与当前元素相同)i- 因为我们提供了一个对
obj的引用作为this的参数,所以this等于obj
结论
希望你现在在你的武器库里有了一些额外的数组方法。编码愉快