【问题标题】:Multi-dimensional array and objects with properties多维数组和具有属性的对象
【发布时间】:2013-12-11 02:27:36
【问题描述】:

我是 Javascript 的新手,刚开始学习对象和数组。尝试构建二维产品数组时,我感到非常困惑。第一个数组由类别组成。每个类别都是一系列产品。每个产品都是产品对象的一个​​实例。喜欢

for car: Honda, Toyota, Ford, etc.
a Honda can consist of :

Civic, 1997, VIN#123435678, 30000 miles, good condition, $12000, etc.
Accord, 1990, VIN#203948574, 100000 miles, good and running, $1000, etc.
So an instance of a car can be a Honda. And Honda can be an array of Accord, Civic, etc

我创造的是:

var salsa1 = new Product("Salsa", "Victor Manuelle", "2013", "17.00");
      var salsa2 = new Product("Salsa", "Grupo Niche", "2012", "15.00");
      var salsa = new Array();
      salsa.push(salsa1);
      salsa.push(salsa2);

      var bachata1 = new Product("Bachata", "Romeo Santos", "2011", "15.00");
      var bachata2 = new Product("Bachata", "Joan Soriano", "2013", "18.50");
      var bachata = new Array();
      bachata.push(bachata1);
      bachata.push(bachata2);

      var products = new Array();
      var count = products.push(salsa);
      count = products.push(bachata);

      document.write("<table border='0'><tr><th>Type of Music</th><th>Artist Name</th><th>Year of release</th><th>Price for CD</th></tr>");
      for (var i=0; i<count; i++)
      {
        document.write("<tr>");
        document.write("<td>" + products[i][0].type + "</td>");
        for (var j=0; j<products[i].length; j++)
        {
            products[i][j].showProduct();
            document.write("</tr><td></td>");
        }

      };

但是这种方式是不对的。请给我一些关于如何找到正确解决方案的建议!

【问题讨论】:

  • 如果你构建一个单独的 HTML 字符串并一次性编写它(即单个 document.write 调用)会更高效(并且对于 HTML 引擎来说更容易),否则它必须处理无效的 HTML一路上。表格必须有一个结束标签(对于 TR 和 TD 可以省略)。开始的 TD 标记不能紧跟在结束的 TR 标记之后,它必须跟在开始的 TR 之后。

标签: javascript


【解决方案1】:

您可以使用 javascript 对象作为关联数组。

var products = {cars: [], musics: []};
products.cars.push({name: 'Something', year: 2005, ...});
products.musics.push({title: 'Something', artist: 'Someone', ...});
for (var key in products) {
    if (products.hasOwnProperty(key)) { //remove any inherited property
        var items = products[key];
        // do something
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 2012-07-23
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多