Все примеры будут представлять следующую матрицу, где 0
не означает никакого значения:
| - - - - - - - |
| 0 | 0 | 2 | 4 |
| - - - - - - - |
| 1 | 0 | 0 | 3 |
| - - - - - - - |
| 0 | 2 | 4 | 6 |
| - - - - - - - |
| 5 | 0 | 2 | 0 |
| - - - - - - - |
Если вам нужны все ячейки в памяти, так что вы должны держать 2D массив размером 10000 х 10000, Я не вижу способа обойти это.
Вариант 1 Пример (строки & смещ_по_столбцам равны нулю основе):
var matrix = [[0,0,2,4],[1,0,0,3],[0,2,4,6],[5,0,2,0]];
Если нет, то вы можете хранить массив один размер, с объектом, который указывает на данной клетке с помощью x
и y
свойства, например.
Варианта 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}
];
Если вам нужно быстрый поиск & доступа, вы можете использовать объект, где имена свойств объекта, например, 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;
Не могли бы Вы описать то, что матрица используется для, какие операции вы обычно делаете с ним и как часто, какие плотности есть данные и т.д.? –
@RomanHocke Это рейтинговая матрица системы рекомендаций, основанная на позиции. Я пытался разработать такую систему, используя набор данных movielens с почти 10000 фильмами. – arslan