Foreach Return Object Property Javascript
Solution 1:
return returns to the function it's in. In the for.. example, that's searchAge. When you use forEach(), you pass it a callback function, and so you return the value to that callback. You never return anything in searchLocation.
You should just use the regular for.. loop both times here.
Solution 2:
in java script there is no break method for forEach.
if you use
return obj.location
it has no effect on it
but when you use return method in for loop then that will break and return the value.
There is some and every which has a break method.
Some break on return true and every break on return false;
try like this
var location = "";
empArray.some(function (obj) {
if (name === obj.name) {
location = obj.location;
returntrue;
}
});
return location;
Or try like this
var location = "";
empArray.every(function (obj) {
if (name === obj.name) {
location = obj.location;
returnfalse;
}
});.
return location;
Solution 3:
That is because in the bellow code snippet
var searchLocation = function(name){
empArray.forEach(function(obj){
if(name === obj.name) {
return obj.location;
}
});
};
If you want to do the same thing use filter like bellow
var searchLocation = function(name){
return empArray.filter(function(obj) {
return name === obj.name
})[0].location;
};
the return statement will be for anonymous function you are giving as parameter to foreach function not to function searchLocation.
Solution 4:
From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
forEach() executes the callback function once for each array element; unlike every() and some(), it always returns the value undefined.
So you could try this which sets a variable and returns it after the loop:
var searchLocation = function(name){
var result;
empArray.forEach(function(obj){
if(name === obj.name) {
result = obj.location;
}
});
return result;
};
Post a Comment for "Foreach Return Object Property Javascript"