您好,我有以下代码:
function showsaveobj(){
let patient = creatobj();
let befaktoren = patient.addfaktoren();
console.log(befaktoren);
let show = document.getElementById("show");
show.innerHTML = "Vorname: " + patient.vorname + "<br>Nachname: " + patient.nachname + "<br>" + (function() {for (let entry of befaktoren.entries()){return entry}})();
};
当我在html文档中按save时调用最后一个函数。它创建一个具有姓氏和姓氏的对象,并且它有一个方法,可以根据用户输入表单的值创建一个地图。表格有24个值,对应于当天的24小时。所以这张地图长24个。我想将这些条目打印到html文档中,如上所示。它可以正常使用名称和姓氏,但是当我使用for..of循环来编写单个条目时它只打印出地图的第一个条目。 当我添加
for (let x of befaktoren.entries()){console.log(x);}
控制台向我显示24个数组,其中包含键和值。当我使用innerHtml在字符串中执行相同的操作时,它只将地图的第一个数组写入文档
我在这里做错了,但我无法弄清楚是什么。在网上搜索了好几天后,我希望有人可以帮助我。
提前致谢
答案 0 :(得分:1)
我认为您误解了Map.entries()
方法。 entries()
不返回可以使用for循环遍历的iterable
对象,而是返回Iterator
,其中包含您可以使用{{1}检索的所有条目方法。
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
next()
本身为Map
,因此您可以在地图上使用iterable
循环。
尽管如此
您的代码:
for
总是将第一个元素放入你的字符串中。
而是做这样的事情:
someString + (function() {
for (let entry of befaktoren.entries()) {
return entry
}
})()
var befaktorenFormatter = function(input) {
let formattedString;
// directly iterate over the input iterable
for (let entry of input) {
formattedString += entry;
}
// don't return the current entry, return the fully formatted string instead
return formattedString;
}
show.innerHTML = "Vorname: " + patient.vorname + "<br>Nachname: " + patient.nachname + "<br>" + befaktorenFormatter(befaktoren);
具有便捷方法Map
,用于迭代其内容。
另见:http://devdocs.io/javascript/global_objects/map/foreach。
您可以执行以下操作,而不是使用forEach
循环:
for
我希望有所帮助。