There appears to be multiple questions here since the title and post body differ. Do you want to know if the array has an element or do you want to get the element itself? If you want to get an element, which one(s) do you want--the first occurrence, the last occurrence or an array of all occurrences?
This post is intended as a resource for future visitors who might not necessarily want to find
(i.e. return the first element from the start of the array that matches a predicate) as the top answer shows. To elaborate on that answer, there's a gotcha with indiscriminately replacing some
with find
in a boolean context--the element returned may be falsey as in
if ([5, 6, 0].find(e => e < 3)) { // fix: use `some` instead of `find`
console.log("you might expect this to run");
}
else {
console.log("but this actually runs " +
"because the found element happens to be falsey");
}
Note that e => e.includes("#")
can be substituted with any predicate, so it's largely incidental to the question.
The same problem can occur when using indexOf
in a condition and failing to account for the fact that 0 (the element was found at the first position in the array) is falsey.
Does any element match the predicate?
const array = ["123", "456", "#123"];
console.log(array.some(e => e.includes("#"))); // true
console.log(array.some(e => e.includes("foobar"))); // false
MDN: Array.prototype.some()
Does every element match the predicate?
const array = ["123", "456", "#123"];
console.log(array.every(e => e.includes("#"))); // false
console.log(array.every(e => /\d/.test(e))); // true
MDN: Array.prototype.every()
What is the first element that matches the predicate?
const array = ["123", "456", "#123", "456#"];
console.log(array.find(e => e.includes("#"))); // "#123"
console.log(array.find(e => e.includes("foobar"))); // undefined
MDN: Array.prototype.find()
What is the index of the first element that matches the predicate?
const array = ["123", "456", "#123", "456#"];
console.log(array.findIndex(e => e.includes("#"))); // 2
console.log(array.findIndex(e => e.includes("foobar"))); // -1
MDN: Array.prototype.findIndex()
What are all the elements that match the predicate?
const array = ["123", "456", "#123", "456#"];
console.log(array.filter(e => e.includes("#"))); // ["#123", "456#"]
console.log(array.filter(e => e.includes("foobar"))); // []
MDN: Array.prototype.filter()
What is the last element that matches the predicate?
const array = ["123", "456", "#123", "456#"];
console.log(array.findLast(e => e.includes("#"))); // "456#"
console.log(array.findLast(e => e.includes("foobar"))); // undefined
MDN: Array.prototype.findLast()
What is the index of the last element that matches the predicate?
const array = ["123", "456", "#123", "456#"];
console.log(array.findLastIndex(e => e.includes("#"))); // 3
console.log(array.findLastIndex(e => e.includes("foobar"))); // -1
MDN: Array.prototype.findLastIndex()
What are the indices of all of the elements that match the predicate?
const filterIndices = (a, pred) => a.reduce((acc, e, i) => {
pred(e, i, a) && acc.push(i);
return acc;
}, []);
const array = ["123", "456", "#123", "456#"];
console.log(filterIndices(array, e => e.includes("#"))); // [2, 3]
console.log(filterIndices(array, e => e.includes("foobar"))); // []
MDN: Array.prototype.reduce()