如何用jQuery/javascript构建一个关联数组

How to build an associative array with jQuery/javascript?

本文关键字:一个 关联 数组 jQuery 何用 javascript 构建      更新时间:2023-09-26

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

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

这个数组非常大(为了演示,我把它做得很小),我想把同一品牌的汽车组织成一个数组,所以品牌名称将是每个子数组的键,像这样:

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

我原以为它会直截了当,但事实并非如此。我尝试了以下代码的几种变体,但每次它都返回:

carsByBrand[项目。品牌]未定义

 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

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

这只会在该品牌的数组已经存在的情况下起作用,除非你先用一个空数组初始化它。

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