在javascript中如何/在哪里保存双条目表?

时间:2012-12-08 18:00:44

标签: javascript html5 canvas matrix html5-canvas

我正在构建一个javascript - html5 canvas横向卷轴游戏。地形基本上包含一个像这样的双重表:

      -1   2   10  
-----------------
0     b    a    c
-----------------
2     a    b    a
-----------------
5     a    a    b
-----------------

(列和行代表地图上的位置,abc会说明该空间上的内容。

我不知道如何保存此表,以便稍后可以快速检索其中的任何范围。我无法想到任何有助于我搜索解决方案的术语,因此任何信息和帮助标记问题都会有所帮助。

2 个答案:

答案 0 :(得分:0)

使用JSON保存此类数据:

var map = {
    '0': {
        '-1': 'b',
        '2': 'a',
        '10': 'c'
    },
    '2': {
        '-1': 'a',
        '2': 'b',
        '10': 'a'
    },
    '5': {
        '-1': 'a',
        '2': 'a',
        '10': 'b'
    }
};

并检索您的数据:map['2']['-1']

您也可以像map['2']['-1'] = 'c'那样更改它。

如果您愿意,可以编写一些更容易操作此对象的函数。

答案 1 :(得分:0)

尝试JSON:JavaScript Object Notation。幸运的是,您也可以用它来表示数组。

我不知道您是否要存储“保存”这样的数据 - 这样,如果用户离开页面,他可以从他离开的地方继续 - 或者如果您想将数据存储为内部表示地图。

'保存':
你可以使用sessionStorage,但我相信这是一个HTML5功能(不确定)。无论如何,这是caniuse页面:http://caniuse.com/#search=sessionStorage 例如:

window.sessionStorage.setItem("map", "{'-1': {0:b, 2:a, 5:a}, '2': {0:a, 2:b, 5:a}, '10':{0:c, 2:a, 5:b}}");

然后用以下方法检索它:

var map = window.sessionStorage.getItem("map");
map = JSON.parse(map);
map[-1][0]; // Should be 'b'

缺点是你只能在sessionStorage中存储字符串,但是看看我是如何使用JSON.parse()处理它的。如果要对对象进行字符串化,可以使用JSON.stringify()

内部代表:

yabol打败了我,但我会提出同样的建议:

var map = {'-1': {0:b, 2:a, 5:a}, '2': {0:a, 2:b, 5:a}, '10':{0:c, 2:a, 5:b}};

这次没有字符串。它将被JS编译器解析为一个对象(也许你已经知道了)。