如何将Map的条目打印到html文档中

时间:2017-10-05 14:40:31

标签: javascript hashmap

您好,我有以下代码:

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在字符串中执行相同的操作时,它只将地图的第一个数组写入文档  我在这里做错了,但我无法弄清楚是什么。在网上搜索了好几天后,我希望有人可以帮助我。
提前致谢

1 个答案:

答案 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

我希望有所帮助。