如何使用jQuery / javascript构建关联数组?

时间:2011-12-14 03:18:50

标签: javascript jquery

我有一个这种格式的大数组:

var cars = [{"brand":"Honda","year":"2002"},{"brand":"Toyota","year":"2000"},{"brand":"Subaru","year":"2009"}];

阵列非常大(为了演示目的我把它做得很小)我想把同一品牌的汽车组织成阵列,所以品牌名称将是每个子阵列的关键,如下所示:

  

carsByBrand [honda [],toyota [],subaru []]

我预计它会很直接,但事实并非如此。我已经尝试了以下代码的几种变体,但每次返回时都会:

  

carsByBrand [item.brand]未定义

 var carsByBrand = [];

   $.each(cars, function(i,item){
     carsByBrand[item.brand].push(item);
    });

    //console.debug(carsByBrand); //uncomment and look at this if you have Firebug

    alert(carsByBrand.length);

我也试过carsByBrand [item ['brand']],为什么这不起作用,怎么做呢?

jsBin:http://jsbin.com/orafos

1 个答案:

答案 0 :(得分:3)

carsByBrand[item.brand].push(item);

只有当该品牌的数组已经存在时才会有效,除非您首先使用空数组初始化该数组,否则它将无效。

尝试

   brand = carsByBrand[item.brand];
   if (brand) {
       brand.push(item);
   else {    
       carsByBrand[item.brand] = [item];
   }