Javascript 突然";“未定义”;在二维数组中

Javascript 突然";“未定义”;在二维数组中,javascript,arrays,Javascript,Arrays,我有以下功能: function composeLootTables(lootType, result) { for (var d in lootType.items) { if (result[lootType.title] === undefined) { result[lootType.title] = [[0],[0]]; } result[lootType.title][d][0] = lootType.i

我有以下功能:

function composeLootTables(lootType, result) {
    for (var d in lootType.items) {
        if (result[lootType.title] === undefined) {
            result[lootType.title] = [[0],[0]];
        }
        result[lootType.title][d][0] = lootType.items[d][0];
        result[lootType.title][d][1] = lootType.items[d][1];
        composeLootTables(lootType.items[d][0], result);
    }
    return result;
}
首先,它解析如下:

residential : {
    title: "residential",
    items:[
        [generic, 0.7],
        [military, 0.7],
        [hospital, 0.7],
        [Colt1911, 0.5]
   ]
},
然后其他类型变为以下类型之一:

var Colt1911 = {
    title: "Colt 1911"
};
var generic = {
     title: "Generic",
     items: [[tin_can, 0.2],[jelly_bean, 0.3]]
};
var military = {
    title: "Military",
    items: [[bfg, 0.2],[akm, 0.3]]
};
var hospital = {
    title: "Hospital",
    items: [[condoms, 0.2],[zelyonka, 0.3]]
};
因此,问题在于:

 result[lootType.title][d][0] = lootType.items[d][0];
 result[lootType.title][d][1] = lootType.items[d][1];

Uncaught TypeError: Cannot set property '0' of undefined 
根据console.log,
result[lootType][d]==未定义
仅当“d”变为2或3时(其他时间为“d”==0或1)

我假设如果我将值赋给数组的未定义字段,它将被这个值填充

我已经找到了解决办法-

result[lootType.title][d] = lootType.items[d];

工作正常,它返回正确的二维数组,但我想知道这些数组的处理方法。

我不得不说问题在于作为参数传递的
结果
对象。如果它没有在这些索引上创建足够的数组,那么这些位置将是未定义的,并且在您尝试分配给它们时将抛出。修改后的版本可以工作,因为它将引用复制到已初始化的数组