Function with forEach Returns Undefined
Original Code:
The provided code defines a function, getByKey, intended to search an object array for a specific value and return either the corresponding key or a message indicating the value couldn't be found. However, the function consistently returns undefined.
function getByKey(key) { data.forEach(function (i, val) { if (data[val].Key === key) { return data[val].Key; } else { return "Couldn't find"; } }); }
Understanding the Issue:
The issue with this code lies in the scope of the return statement within the forEach loop. The return statement is exiting the loop, not the getByKey function itself. To return a value from the function, it should be placed outside the loop.
Solution:
One way to resolve this would be to assign the return value to a variable inside the loop and then return it from the function.
function getByKey(key) { var result; data.forEach(function (val) { if (val.Key === key) { result = val.Key; } }); return result; }
Alternatively, you could use a plain for loop instead of forEach and directly return from the function within the loop.
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i].Key; } } }
The above is the detailed content of Why Does My `forEach` Function Return `undefined` in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!