检查数组中的所有值是否在 JavaScript 中相等

检查数组中的所有值是否相等

Check if all Values in Array are Equal in JavaScript

检查数组中的所有值是否相等:

  1. 使用该Array.every()方法遍历数组。
  2. 检查每个数组元素是否等于第一个元素。
  3. 如果所有数组元素都相等,every()方法将返回。true
索引.js
const arr1 = [1, 1, 1]; const arr2 = [1, 1, 2]; function allAreEqual(array) { const result = array.every(element => { if (element === array[0]) { return true; } }); return result; } console.log(allAreEqual(arr1)); // 👉️ true console.log(allAreEqual(arr2)); // 👉️ false if (allAreEqual(arr1)) { // 👇️ this runs console.log('All elements in the array are equal'); } else { console.log('Not all elements in the array are equal'); }

我们传递给
Array.every()
方法的函数会针对数组中的每个元素进行调用,直到它返回一个虚假值或遍历整个数组。

如果该函数返回一个假值,该every()方法将短路并返回false

在每次迭代中,我们检查当前元素是否等于 position 处的元素0如果所有元素都满足条件,则它们都相等。

当在Array.every()空数组上调用该方法时,它会true针对任何条件返回。
索引.js
const arr1 = []; function allAreEqual(array) { const result = array.every(element => { if (element === array[0]) { return true; } }); return result; } console.log(allAreEqual(arr1)); // 👉️ true

如果你考虑一个所有值都相等的空数组,你不需要做任何事情。

但是,如果您考虑一个并非所有元素都相等的空数组,请使用以下解决方案。

索引.js
const arr1 = []; const arr2 = [1, 1, 1]; function allAreEqual(array) { if (array.length > 0) { const result = array.every(element => { if (element === array[0]) { return true; } }); return result; } return false; } console.log(allAreEqual(arr1)); // 👉️ false console.log(allAreEqual(arr2)); // 👉️ true
我们首先检查数组的长度,并且仅当数组至少包含 1 个元素时才调用该方法。 every()

这完全是特定于用例的。例如,您可能想要检查数组是否至少有 2 个元素true要从函数返回。

另一种方法是使用
Set 对象

使用 Set 对象检查数组中的所有值是否相等

检查数组中的所有值是否相等:

  1. 将数组传递给Set()构造函数并访问该size属性。
  2. Set对象仅存储唯一值。
  3. 如果 的Set长度为1,则所有数组元素都相等或数组仅包含 1 个元素。
索引.js
const arr1 = [1, 1, 1]; const arr2 = [1, 1, 2]; function allAreEqual(array) { const result = new Set(array).size === 1; return result; } console.log(allAreEqual(arr1)); // 👉️ true console.log(allAreEqual(arr2)); // 👉️ false

Set对象允许我们存储唯一值并自动删除所有重复值。

如果我们多次向它传递一个包含相同值的数组,它只会被添加一次到Set.

索引.js
console.log(new Set([1, 1, 1])); // 👉️ { 1 }

size属性Set允许我们获取存储在 中的值的数量Set

如果 中值的个数Set等于1,则数组中的所有值都相等,或者数组只包含一个元素。

如果只想true在数组至少包含2元素时返回,请添加以下if语句。

索引.js
const arr1 = [1]; const arr2 = [1, 1, 1]; function allAreEqual(array) { if (array.length > 1) { const result = new Set(array).size === 1; return result; } else { return false; } } console.log(allAreEqual(arr1)); // 👉️ false console.log(allAreEqual(arr2)); // 👉️ true

我们首先确保数组包含超过 1 个元素。

如果是,我们将数组传递给Set构造函数。

在所有其他情况下,我们返回false

您还可以使用for...of循环来检查数组中的所有元素是否相等。

for...of使用循环检查数组中的所有值是否相等

检查数组中的所有值是否相等:

  1. 使用for...of循环遍历数组。
  2. 检查每个元素是否不等于第一个数组元素。
  3. 如果满足条件,则将布尔变量设置为false并退出循环。
索引.js
function allAreEqual(array) { let areEqual = true; for (const element of array) { if (element !== array[0]) { areEqual = false; break; } } return areEqual; } const arr = [0, 0, 0]; const arr1 = [1, 1, 2]; const arr2 = [1, 1, 1]; console.log(allAreEqual(arr)); // 👉️ true console.log(allAreEqual(arr1)); // 👉️ false console.log(allAreEqual(arr2)); // 👉️ true

for…of
语句用于循环遍历可迭代对象,如数组、
字符串
Map
SetNodeList对象generators

在每次迭代中,我们检查当前元素是否不等于第一个数组元素。

如果满足条件,我们将areEqual变量设置为并跳出循环。 false

for...of循环非常高效,因为一旦找到不等于其他数组元素的值,它就不会进行不必要的迭代。

您还可以使用基本for循环来检查数组中的所有元素是否相等。

for使用循环检查数组中的所有值是否相等

检查数组中的所有值是否相等:

  1. 使用for循环遍历数组。
  2. 在每次迭代中,检查当前元素是否不等于第一个数组元素。
  3. 如果从未满足条件,则所有数组元素都相等。
索引.js
function allAreEqual(array) { let areEqual = true; for (let index = 0; index < array.length; index++) { if (array[index] !== array[0]) { areEqual = false; break; } } return areEqual; } const arr = [0, 0, 0]; const arr1 = [1, 1, 2]; const arr2 = [1, 1, 1]; console.log(allAreEqual(arr)); // 👉️ true console.log(allAreEqual(arr1)); // 👉️ false console.log(allAreEqual(arr2)); // 👉️ true

我们使用了一个基本for循环来遍历数组。

在每次迭代中,我们检查当前索引处的元素是否不等于第一个数组元素。

如果满足条件,我们将areEqual变量设置为false并使用
break语句跳出loop.

您还可以使用该Array.filter()方法检查数组中的所有值是否相等。

使用#检查数组中的所有值是否相等Array.filter()

检查数组中的所有值是否相等:

  1. 使用该Array.filter()方法遍历数组。
  2. 检查每个数组元素是否等于第一个数组元素。
  3. 检查新数组的长度是否等于原始数组的长度。
索引.js
function allAreEqual(array) { return ( array.filter(element => { return element === array[0]; }).length === array.length ); } const arr = [0, 0, 0]; const arr1 = [1, 1, 2]; const arr2 = [1, 1, 1]; console.log(allAreEqual(arr)); // 👉️ true console.log(allAreEqual(arr1)); // 👉️ false console.log(allAreEqual(arr2)); // 👉️ true

我们传递给
Array.filter()
方法的函数会针对数组中的每个元素进行调用。

在每次迭代中,我们检查当前元素是否等于第一个数组元素。

filter()方法返回一个新数组,其中包含回调函数返回的值true

如果新数组的长度等于原数组的长度,则所有数组元素都相等。

请注意,这种方法不是很有效,因为即使找到不匹配的值,您也必须继续遍历数组。

您选择哪种方法是个人喜好的问题。我会使用
Array.every()方法或Set()构造函数,因为它们非常高效且易于阅读。