2013-12-11 2 views
0

Я очень новичок в 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>"); 
     } 

     }; 

Но этот путь не является правильным. Пожалуйста, дайте мне несколько советов по правильному пути решения!

+0

Это более эффективно (и проще для HTML двигателя), если построить одну строку HTML и записать его в один присест (то есть один 'document.write' вызов), в противном случае он должен иметь дело с недействительным HTML по пути. Таблица ** должна иметь закрытый тег (они могут быть опущены для TR и TD). Открытие тэга TD не может сразу следовать за закрывающим тегом TR, он должен следовать за открытием TR. – RobG

ответ

0

Вы можете использовать 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 
    } 
} 
Смежные вопросы