우선, 제 질문은 noobish입니다. 나는 Javascript를 스스로 학습하고 있으며 오류를 실제로 이해하지 못합니다. 나는이를 제거하면 위에서 언급 한 바와 같이자바 스크립트 오류가 정의되지 않았습니다.
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);
});
두 번째에 오류가 없습니다. * 두 번째 코드는 자습서에서 가져온 것입니다.
것들 나는 시도했다 :
- 내가 함수 그룹 아래의 "VAR centuryGroup = ..."를 넣어 ... 그리고 여전히 차이가 없습니다
- 내가 때 코드가 작동하는지 확인 만든 오류 라인을 주석
- 나는 제거 한 경우와 다른 문 및
* 정확한 오류가 "형식 오류가 정의되지 않은이 여전히 오류 (나는 그것이 차이를 만든 것으로 기대하지 않는 것이)에서 {} 나는 기능이 아닙니다. "
나는 실종됐다. 도움 주셔서 감사합니다
* 편집. 그는 "푸시"속성이 안되는 경우
에 전달된다 "배열"의 내용은 그런데
{ 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"
...
이며, 제 2 코드가 작동 할 수 없습니다. 그러나 그것은 원하는 결과를 보여주고 있습니다. * 혼란스러운
솔트! 그것
요소에 내 실수 [요소]를해야 else 문에서 첫 번째 코드에서 < == 나를 위해 그런 실수를 지적 뾰족한에
감사합니다. 그 원인은 배열이 아니므로 .push가 작동하지 않는다고 말했기 때문입니다. 그러나 일단 그것을 [요소]로 넣고 배열로 만들면 배열의 객체로 그것을 넣을 수있게 될 것입니다. 모두에게 감사의 말
오류는 'groups [groupName]'이 무엇이든간에 'push'속성이 없음을 의미합니다. 즉, 코드는 배열이라고 가정하지만 코드는 다른 종류의 객체입니다. 튜토리얼의'요소 '주위의'[]'가 핵심입니다. – Pointy
왜 "else"문에서'[element]'를'element'로 바꾸 었습니까? – Pointy
직접적인 대답은 아니지만 goping과 같은 일반적인 기본 기능을 제공하는 lodash 또는 밑줄과 같은 라이브러리를 사용할 수 있습니다. – harishr