Javascript array iteration with some() and every()
If you're using an array in your code, chances are, you'll need to iterate over the values in the array. There's a couple of ways you can do that, some better and more efficient than others depending on what you want to accomplish.
For this post, I'll focus on two ways: some()
and
every()
.
some()
The some()
method tests whether at least one element in
the array passes the test implemented by the provided function. It
checks the elements one by one, and if it finds an array element where
the function returns a truthy value, some()
returns
true
and does not check the remaining values. Otherwise it
returns false
.
Lets say you want to check if a contact exists in your contact list:
const contacts = ["Stewie", "Meg", "Quagmire", "Cleveland"];
function checkContacts(arr, val) {
return arr.some((arrVal) => val === arrVal);
}
checkContacts(contacts, "Lois"); // false
checkContacts(contacts, "Meg"); // true
When checking for Lois
, some()
checks the
array elements beginning at Stewie
to the end, and having
not found a match, returns false
. When checking for
Meg
, it stops at Meg
and returns
true
, ignoring the rest of the elements.
every()
This method tests whether all elements in the array pass the test
implemented by the provided function. It checks the elements one by one,
and if it finds an array element where the function returns a falsy
value, every()
returns false
and does not
check the remaining values. Otherwise it returns true
.
Lets check if all the names in our contacts list have more than 3 characters:
["Stewie", "Meg", "Quagmire", "Cleveland"].every(
(contact) => contact.length >= 4,
); // false
["Stewie", "Megan", "Quagmire", "Cleveland"].every(
(contact) => contact.length >= 4,
); // true
The first test returns false
since Meg
has
only 3 characters. Remember: for every()
, all the
elements in the array have to be truthy for it to return
true
. Changing Meg
to Megan
in
the second test therefore returns true
.
These two methods can come in handy if you need to perform somewhat similar tasks as described above. But of course, they're not the only way.