Javascript - 循环对象数组,仅显示最后一个对象

标签 javascript arrays object for-loop

我花了一些时间尝试制作标题来解释所发布的问题,但我担心它有点不足以解决我遇到的问题。

简而言之,我正在使用 for 循环来迭代这个对象数组。

var people = [
  {
      name: "John Doe",
      age: 33,
      gender: "male",
      loc: "Springfield"
   },
   {
      name: "Jane Doe",
      age: 32,
      gender: "female",
      loc: "Springfield"
   }
];

for 循环通过一个传递两个参数、一个元素 id 和数组的函数运行,如下所示。

var list = {
  html: function (el, array) {
    var container = document.getElementById(el), html;    
    for( var i=0;i<array.length;i++ ) {
      html  = '<div class="item">';
      html +=   '<h1>'+array[i].name+'</h1>';
      html +=   '<p>Age: '+array[i].age+'</p>';
      html +=   '<p>Sex: '+array[i].gender+'</p>';
      html +=   '<p>Location: '+array[i].loc+'</p>';
      html += '</div>';     
      console.log( array[i].name+', '+array[i].age+', '+array[i].gender+', '+array[i].loc );  
    } 
    container.innerHTML = html; 
  } 
}
list.html('list', people); 

问题:循环仅返回数组中的最后一个对象。我不确定为什么会发生这种情况或如何解决。任何帮助将不胜感激。谢谢。

这里是一个链接:relevant demo

最佳答案

使用空字符串初始化 html var,并在 for 循环的开头添加 +:

var container = document.getElementById(el), html = "";   
for( var i=0;i<array.length;i++ ) {
    html  += '<div class="item">';  // add plus here

关于Javascript - 循环对象数组,仅显示最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140344/

相关文章:

javascript - “裁剪”二维数组?

php - 递归列表函数

javascript - 如何使用jquery删除重复的meta标签?

javascript - 将样式转换为 ng-style

javascript - JQuery id 测试失败,带有单独 div 的动画系统

java - 理解合并排序的栅栏处理问题

javascript - 如何在 HTML 页面上显示原始 JSON 数据

php - 如何将段落更改为 PHP 中的数组,包括空格和标点符号

java - java只创建一个Scanner对象

javascript - 如何创建具有未分配属性的 Javascript 构造函数/原型(prototype)?