Javascript:多维对象

use*_*363 8 javascript object multidimensional-array

我想创建一个对象,从以下内容开始:

var map = {};
Run Code Online (Sandbox Code Playgroud)

然后,我想添加具有此功能的项目:

add = function(integerA, objectB) {
    map[objectB.type][integerA] = objectB;
}
Run Code Online (Sandbox Code Playgroud)

所以,这是我想要实现的对象结构的随机示例:

map = {
    'SomeType' : { 0 : 'obj', 2 : 'obj', 3 : 'obj' },
    'OtherType' : { 0 : 'obj', 5 : 'obj' },
};
Run Code Online (Sandbox Code Playgroud)

现在,我的问题.我做不到map[objectB.type][integerA] = objectB;因为map[objectB.type]没有定义.我可以map[objectB.type]通过if-statement 检查是否存在并map[objectB.type] = {};在必要时创建来解决这个问题.

否则我可以预先加载所有对象类型.但是,我宁愿不必这样做.

我的问题:有没有一种方法可以"动态"创建对象,而无需在每次调用add函数或预先加载所有类型时检查类型是否已存在?

重要的是我的add函数尽可能快,并且map对象是正确的,因为我需要在很短的时间内读取和写入很多东西(它是一个动画/游戏应用程序).

bjo*_*rnd 9

不,没有任何其他方法可以动态创建对象.每次只检查存在:

add = function(integerA, objectB) {
    if (!map[objectB.type]) {
        map[objectB.type] = {};        
    }
    map[objectB.type][integerA] = objectB;
}
Run Code Online (Sandbox Code Playgroud)

如果您想提高性能,可以考虑一些缓存技术.