我写了一些简单的JavaScript来创建一个HTML表格 它通过遍历数组
来填充var resultSet;
for (var i = 0, i < questions.length;; i++){
...
resultSet += '<tr>' + '<td>' + i + '</td><td>' + questions[i].question + '</td><td>' + questions[i].userAnswer + '</td><td>' +
questions[i].correctAnswer + '</td>' + '</tr>';
}
所以这是一种必要的方法。我正在阅读Scala,其中一个类似的例子是:
questions.map(n => '<tr>' + '<td>' + '</td><td>' + questions[i].question + ...);
哪个是功能性的。重点在于什么而不是如何。
所以我想知道如何使我的JavaScript更具功能性?
当然允许使用JQuery。
答案 0 :(得分:3)
Javascript有Array.forEach
但兼容性有限:虽然所有其他浏览器都支持它,但IE仅支持IE9 - 因此您可能需要其他IE的垫片。
基本上你可以写:
questions.forEach(function(a){
resultSet += '<tr><td>' + a.question + '</td><td>' +
a.userAnswer + '</td><td>' +
a.correctAnswer + '</td></tr>';
});
jQuery提供.each()
,它提供了相同的功能:
$.each(questions, function(index, value) {
/* Do your stuff*/
});
答案 1 :(得分:2)
首先,正确的Scala将是
questions.map(q => '<tr>' + '<td>' + '</td><td>' + q.question + ...);
其中q
是questions
的元素,而不是索引。
JavaScript也有map
(有关支持此方法的浏览器,请参阅最后的浏览器兼容性)。所以它是一样的:
questions.map(function(q) {
return '<tr>' + '<td>' + '</td><td>' + q.question + ...
});