[英]Javascript Error undefined is not a function
var centuryGroup = grouping(ancestry, function(person){
return Math.ceil(person.died/100);
});
function grouping(array, group){
var groups = {};
array.forEach(function(element) {
var groupName = group(element);
if(groupName in groups){
groups[groupName].push(element); //the error is stated at this line
}
else{
groups[groupName] = element;
}
});
return groups;
}
如上所述,錯誤在
groups[groupName].push(element);
如果我刪除它,它會起作用。
並且,如果它定義為:
function grouping(array, group) {
var groups = {};
array.forEach(function(element) {
var groupName = group(element);
if (groupName in groups)
groups[groupName].push(element);
else
groups[groupName] = [element];
});
return groups;
}
var centuryGroup = grouping(ancestry, function(person) {
return Math.ceil(person.died / 100);
});
第二個沒有錯誤。 *第二個代碼取自教程。
我嘗試過的事情:
確切的錯誤是
TypeError undefined 不是函數
傳入的“數組”的內容是
{ name: "Carolus Haverbeke" }
sex: "m"
born: 1832
died: 1905
father: "Carel Haverbeke"
mother: "Maria van Brussel"
{ name: "Emma de Milliano" }
sex: "f"
born: 1876
died: 1956
father: "Petrus de Milliano"
mother: "Sophia van Damme"
...
順便說一句,如果它不應該具有“推送”屬性,那么第二個代碼不應該工作。 但它是並且它正在顯示預期的結果。 *使困惑
在else
語句中您沒有創建新數組,僅此而已。 任何不是 aray 的東西都沒有push()
功能。 您在 else 語句中的代碼而不是應該是:
groups[groupName] = element;
應該:
groups[groupName] = []; // Create empty array
groups[groupName].push('element'); // push an element to array
或者:
groups[groupName] = [element]; // create array with one element
PS不要在沒有打開/結束花括號的情況下使用if/else
語句,有一天你會在腳上開槍......
if (groupName in groups) {
groups[groupName].push(element);
} else {
groups[groupName] = [element];
}
這是我的錯誤
element
<== 在 else 語句中的第一個代碼中應該是[element]
這是因為它不是數組,因此.push
不起作用。 但是一旦我將它作為[element]
並將其放入數組中,那么我將能夠.push
它作為數組的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.