我有想不通的問題,這裏是我的代碼:我的函數沒有返回我的期望使用高階函數
var people = [
{name: "Alyssa P. Hacker", age: 26},
{name: "Ben Bitdiddle", age: 34},
{name: "Eva Lu Ator", age: 19},
{name: "Lem E. Tweakit", age: 40}
];
function map(arr, f){
var finalArr = [];
each(arr, function(arrI){
finalArr.push(f(arrI))
})
return finalArr;
}
function mapNameAge(obj){
for (var key in obj){
return obj[key].name + " is " + obj[key].age;
}
}
function mapArr(obj, f){
return map(obj, mapNameAge);
}
正如你可以mapArr功能看,我想使用地圖將字符串推入finalArr,其中包含[「Alyssa P. Hacker爲26」,「Ben Bitdiddle爲34」等等索引...]
如果我在控制檯中運行mapNameAge(people)
,按預期收回Alyssa的信息。但是當我在控制檯中運行mapArr(people, mapNameAge)
時,我得到["undefined is undefined", "undefined is undefined", "undefined is undefined", "undefined is undefined"]
有人能幫我理解這裏發生了什麼嗎? TIA!
'obj [key] .name'不存在...你不需要循環。 'people.map(function(obj){return obj.name +'is'+ obj.age})' – elclanrs
謝謝!我想我很困惑,因爲這是我做的第一件事:'''map(people,function(x){var key in people){return to people [key] .name; } })''我把它輸入到控制檯,它正在工作。我只是不確定爲什麼分手這兩個不起作用......再次感謝! –