【问题标题】:How to loop through Javascript Objects, display them in tables如何循环遍历 Javascript 对象,将它们显示在表格中
【发布时间】:2015-11-12 05:51:18
【问题描述】:

我第三天上课,我们应该做一个汽车瞄准器来使用物体。我有四个对象。我想为每个人制作一张桌子,左边是他们的钥匙,右边是他们的价值。四张桌子并排。我更愿意循环按键来制作和循环按键,因为我一直在玩并且失败得很惨。任何帮助将不胜感激。我有四个并排的 div,我想用表格填充它们。这是我的对象:

这是我的对象和价值观:

let Accord = new Car("Accord", 22500, "Crystal White", "alloy", "bose", "leather", "tinted");
let CRV= new Car("CR-V", 28400, "Midnight Black", "alloy", "stock", "cloth", "no tint");
let Pilot = new Car("Pilot", 36796, "Modern Gray Metallic", "alloy", "bose", "leather", "tinted");
let Fit = new Car("Fit", 17499, "Raspberry Blue", "steel", "stock", "cloth", "no tint");

//Here is the entire object:

class Car extends Vehicle {
    wheels: string;
    stereo: string;
    seatsMaterial: string;
    tint: string;
    constructor(model, price, color, wheels, stereo, seatsMaterial, tint) {
        super(model, price, color);
        this.wheels = wheels;
        this.stereo = stereo;
        this.seatsMaterial = seatsMaterial;
        this.tint = tint;
    }
}

【问题讨论】:

  • 你到底尝试了什么?
  • 你试过这个答案了吗:stackoverflow.com/questions/921789/…
  • 我尝试构建一个持有者并为每次迭代添加 + key + 。我想我有点接近了,但我没有得到任何输出。
  • 我看到了阿琼。谢谢。我只是不知道如何用它做一张桌子。

标签: javascript html typescript


【解决方案1】:

基本上,您希望遍历数组中的项目并为每个项目绘制一个新行。

可以这样轻松完成:

function makeTable ( object ) {
    // Check type
    if ( typeof object !== 'object' ) return false;

    // Start our HTML
    var html = "<table><tbody>";
    // Loop through members of the object
    for ( var key in object ) {
        // https://jslinterrors.com/the-body-of-a-for-in-should-be-wrapped-in-an-if-statement
        if ( !object.hasOwnProperty(key) ) continue;
        // Add our row:
        html += "<tr><th>" + key + "</th><td>" + object[key] + "</td></tr>";
    }
    // Finish the table:
    html += "</tbody></table>";
    // Return the table
    return html;
}

然后你可以像这样运行它:

document.body.innerHTML = makeTable(myCarObject);
document.getElementById('some-id').innerHTML = makeTable(myCarObject);

关于上述代码的一些说明

  1. 检查类型 - 您要确保传递的参数实际上是一个对象,以免它可能出现意外行为。
  2. .hasOwnProperty 调用 - 正如 here 所解释的,当您循环访问对象时,有时对象可能具有意想不到的属性。这是由于它们的原型以及它们从它继承的任何属性。确保代码按预期运行的一个好方法是在对象不具有此属性时 continue 循环

【讨论】:

  • 看起来棒极了,谢谢马丁!两个问题。 !object.hasOwnProperty(key) 有什么作用?我在哪里把它放在我的代码中?在我的物品下面?对不起,这只是我这样做的第三天。谢谢!
  • 我在代码注释中添加了一个描述的链接,但如果你愿意,我可以更新问题让你“简而言之”解释它
  • 如果这对您有用,@ScottVMeyers,请随时将其标记为解决方案 :)
  • 太棒了!这太棒了马丁!最后一件事,对不起,我无法弄清楚这一点。它不喜欢您使用 myCarObject。我应该将其更改为对象以将参数与函数匹配吗?还有一个问题。我怎么做四个?
  • 因为myCarObject 不存在。你会想要使用你在原始帖子中定义的一个,比如Accord
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 2015-03-17
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多