在JavaScript中存储/读取大型matrix的最佳方法是什么?

我有10000个项目,我需要创build一个10000行* 10000列matrix。 如果我使用一维数组,那么这将是巨大的。 另外,我想设置一些值给一个单元格(i,j),其中0 <i,j <10000,所以这将是很多的迭代。

我无法想出任何想法。 那么在node / javascript中最好的方法是什么?

所有的例子将代表下面的matrix,其中0表示没有值:

 | - - - - - - - | | 0 | 0 | 2 | 4 | | - - - - - - - | | 1 | 0 | 0 | 3 | | - - - - - - - | | 0 | 2 | 4 | 6 | | - - - - - - - | | 5 | 0 | 2 | 0 | | - - - - - - - | 

如果你需要在内存中的所有单元格,所以你需要保持在10,000×10,000的大小的二维数组,我没有看到它的方式。

选项1示例(行和列是从零开始的):

 var matrix = [[0,0,2,4],[1,0,0,3],[0,2,4,6],[5,0,2,0]]; 

如果没有,你可以保留一个一维数组,使用xy属性指向给定单元格的对象。

选项2示例(为了简单起见,行和列是1):

 var matrix = [ {x: 3, y: 1, value: 2}, {x: 4, y: 1, value: 4}, {x: 1, y: 2, value: 1}, {x: 4, y: 2, value: 3}, {x: 1, y: 3, value: 2}, {x: 2, y: 3, value: 4}, {x: 3, y: 3, value: 6}, {x: 1, y: 4, value: 5}, {x: 3, y: 4, value: 2} ]; 

如果您需要快速search和访问,则可以使用对象,其中对象属性名称是例如row索引,每个属性值是具有column索引作为属性的对象,其值是单元格值。 请注意,对象属性是表示数字的string,因为数字不能用作属性名称。

选项3示例(为简单起见,行和列是1):

 var matrix = { '1': { '3': 2, '4': 4 }, '2': { '1': 1, '4': 3 }, '3': { '2': 2 '3': 4, '4': 6 }, '4': { '1': 5, '3': 2 } }; // Get value of cell (col: 3, row: 4) console.log(matrix['4']['3']); // Set value of cell (col: 2, row: 3) matrix['3']['2'] = 100; // Check if cell (col: 1, row: 1) has value var hasValue = matrix['1'] !== undefined && matrix['1']['1'] !== undefined;