Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In the following code, can somebody explain why object property is returned using a for loop but not using a forEach. Is it something related to returning object references or is it something specific to forEach loop on an array ?

var empModule = (function(){
    var empArray = [{
        "name":"Aish",
        "age":"27",
        "location": "All"
    },{
        "name":"Anu",
        "age":"26",
        "location": "Muz"
    },{
        "name":"Vern",
        "age":"25",
        "location": "Mang"
    }];

    var searchAge = function(name){  
        for(var i=0;i<empArray.length;i++) {
            if(empArray[i].name === name) {
                return empArray[i].age;
            }
        };
    };

    var searchLocation = function(name){
        empArray.forEach(function(obj){
            if(name === obj.name) {
                return obj.location;
            }
        });
    };

    return {
        findAge: searchAge,
        findLocation: searchLocation
    };

})();
var secAge = empModule.findAge("Anu");
console.log(secAge); // Correct Output
var thirdLoc = empModule.findLocation("Vern");
console.log(thirdLoc); // Returns undefined
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.4k views
Welcome To Ask or Share your Answers For Others

1 Answer

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...