이 함수는 http://eloquentjavascript.net/입니다. 그것은 내 코드가 아니지만 무료 교과서에 있기 때문에 교육 목적으로는 좋을 것 같습니다. 누구든지 웹 사이트에 가서 얻을 수있을 때.이 테이블 작성 코드는 JavaScript에서 어떻게 작동합니까?
전체 코드는 테이블을 구축하는 데 사용됩니다; 이것이 첫 번째 부분입니다. 어쩌면 함수 내에 함수가 너무 많아서 혼란 스럽겠습니까?
function rowHeights(rows) {
return rows.map(function(row) {
return row.reduce(function(max, cell) {
return Math.max(max, cell.minHeight());
}, 0);
});
}
function colWidths(rows) {
return rows[0].map(function(_, i) {
return rows.reduce(function(max, row) {
return Math.max(max, row[i].minWidth());
}, 0);
});
}
그런 다음 테이블의 실제 그림으로 이동합니다. 첫 번째 부분을 이해하면이 사실을 이해할 수 있습니다.
function drawTable(rows) {
var heights = rowHeights(rows);
var widths = colWidths(rows);
function drawLine(blocks, lineNo) {
return blocks.map(function(block) {
return block[lineNo];
}).join(" ");
}
function drawRow(row, rowNum) {
var blocks = row.map(function(cell, colNum) {
return cell.draw(widths[colNum], heights[rowNum]);
});
return blocks[0].map(function(_, lineNo) {
return drawLine(blocks, lineNo);
}).join("\n");
}
return rows.map(drawRow).join("\n");
}
두 번째 부분에서는 대답이 필요하지 않다고 생각합니다. 첫 번째 부분을 이해 한 후에해야한다면 두 번째 질문을 게시 할 것입니다.
나중에 코드가 더 많습니다. 그것이 도움이된다면, 나는 또한 코멘트에 질문하는 경우, 여기에 복사 할 수 있습니다. 감사합니다. :)
감사합니다. @Barmar! 당신의 설명이 도움이됩니다. 단계별, 라인 별 답을 얻을 수 있습니까? 그렇지 않다면, 그것은 완벽하게 괜찮습니다. 그러나 실제로 이해할 수 있도록 도와 줄 것입니다. :) 그렇다면 축소 또는지도 작성과 같은 방법을 설명 할 필요가 없습니다. 퍼즐의 각 부분이 어떻게 잘 어울리는지를 알고 있기 때문입니다. 나는 이것이 너무 많이 요구한다면 이해할 수 있습니다. 답변을 주셔서 다시 한 번 감사드립니다! :) !! – JavaScriptArray
'reduce'와'map'이 무엇을하는지 이해한다면, 모든 일이 무엇을하는지 알아낼 수 있어야합니다. 그냥 안쪽에서 작업하십시오. – Barmar
고마워, @ 바르 마. 나는 외부에서 코드를 작업하려고 노력하고 있었다고 생각한다. – JavaScriptArray