学习JavaScript Array.every()和Array.some()方法

240 阅读1分钟

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 通过了测试,56 甚至没有被测试。

其他功能

现在我们大致知道了everysome 方法的工作原理,下面是你可以从它们那里得到的一些额外功能。

  • Array.everyArray.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

结论

希望你现在在你的武器库里有了一些额外的数组方法。编码愉快