I have written a function to search an array and log a number(x) if it is found. The code below works as expected and 1 is logged.
let myArr = [54, 23, 499, 342, 1, 44];
let x = 1;
let searchNumber = (arr) => {
arr.forEach(ele => {
if (ele == x) {
console.log(ele);
}
})
};
searchNumber(myArr);
I’d like to now return the number that I assign to variable x. Expecting y to be assigned 499 but when I log y it returns undefined. Where am I going wrong?
let myArr = [54, 23, 499, 342, 1, 44];
let x = 499;
let searchNumber = (arr) => {
arr.forEach(ele => {
if (ele == x) {
return ele;
}
})
};
let y = searchNumber(myArr);
Advertisement
Answer
If you look at the placement of the return statement, it is actually within the arrow function being called for each element (ele => {...}). No value is actually being returned from the scope of the function searchNumber.
Try creating a variable in the scope of searchNumber and modifying it from arr.forEach() instead:
let myArr = [54, 23, 499, 342, 1, 44];
let x = 499;
let searchNumber = (arr) => {
let val = null;
arr.forEach(ele => {
if (ele == x) {
val = ele;
}
});
return val;
};
let y = searchNumber(myArr);