【发布时间】:2014-08-25 20:24:19
【问题描述】:
这些函数来自http://eloquentjavascript.net/。这不是我的代码,但由于它在免费教科书中,我认为它应该可以用于教育目的,尤其是。当任何人都可以访问该网站并获取它时。
完整代码用于建表;这是第一部分。可能是函数里面有这么多的函数让我很困惑?
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");
}
我认为我不需要第二部分的答案;如果我在理解第一部分后这样做,我会发布第二个问题。
他们甚至有更多的代码;如果它有帮助,我也可以将它复制到这里,如果在 cmets 中被要求。 谢谢! :)
【问题讨论】:
标签: javascript function methods higher-order-functions