我有一个这种格式的大数组:
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
答案 0 :(得分:3)
carsByBrand[item.brand].push(item);
只有当该品牌的数组已经存在时才会有效,除非您首先使用空数组初始化该数组,否则它将无效。
尝试
brand = carsByBrand[item.brand];
if (brand) {
brand.push(item);
else {
carsByBrand[item.brand] = [item];
}