簡體   English   中英

在JavaScript中存儲/讀取大型矩陣的最佳方法是什么?

[英]What is the best way to store/read a large matrix in JavaScript?

我有10000個項目,我需要創建一個10000行* 10000列的矩陣。 如果我使用一維數組,那么它將是巨大的。 另外,我想將一些值設置為一個單元格(i,j),其中0 <i,j <10000,所以這將是很多迭代。

我無法想出任何想法。 那么在node / javascript中執行此操作的最佳方法是什么?

所有示例都代表以下矩陣,其中0表示沒有值:

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

如果您需要內存中的所有單元,那么您需要保持10,000 x 10,000大小的2D陣列,我看不到它的方法。

選項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}
];

如果需要快速搜索和訪問,則可以使用object,其中對象屬性名稱例如是row索引,每個屬性值是一個對象,其column索引為屬性,其值為單元格值。 請注意,對象屬性是表示數字的字符串,因為數字不能用作屬性名稱。

選項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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM