Как передать 2d массив в качестве параметра в javascript? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить доступ к указанному элементу c в массиве, но получаю только первый. Любая помощь с указанием моей ошибки приветствуется.

let testArr = [[1, 2, 3],[4, 5, 6]];
const printArr = (someArr, i) => alert(someArr[i]);
printArr(testArr, [0][0]);

Ожидаемый результат

1

Фактический результат

1, 2, 3

Ответы [ 4 ]

2 голосов
/ 16 апреля 2020

[0][0] на самом деле 0. Это то же самое, что и

a = [0];
a[0] === [0][0]; // 0

То, что вы на самом деле хотите сделать, неясно. Если вы просто хотите передать значение, просто передайте это значение, а не массив и индекс отдельно.

printArr(testArr[0][0]);

Если по какой-либо причине вам нужен индекс и массив, переданные отдельно, то вы можете передать инди в виде массива:

let testArr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, [8, 9], 10]
];
const printArr = (arr, indices) => console.log(indices.reduce((a, i) => a[i], arr));
printArr(testArr, [2, 1, 0]); // 8
1 голос
/ 16 апреля 2020
printArr(testArr, [0][0]);

приблизительно:

const some_array = [0];
const second_arg = some_array[0]
printArr(testArr, second_arg);

Вы передаете 0 в качестве второго аргумента.

Вы не можете передать произвольные биты JS синтаксис вокруг.

Используйте вместо этого два аргумента.

let testArr = [[1, 2, 3],[4, 5, 6]];
const printArr = (someArr, i, j) => alert(someArr[i][j]);
printArr(testArr, 0, 0);

0 голосов
/ 16 апреля 2020

Или вы можете просто сделать это без приведения массива как числа или аналогичные.

let testArr = [
    [1, 2, 3],
    [4, 5, 6],
];
const printArr = (someArr, arrNum, indNum) => someArr[arrNum][indNum];

printArr(testArr, 1, 0);
0 голосов
/ 16 апреля 2020

Вы можете взять функцию для получения специального значения.

let testArr = [[1, 2, 3],[4, 5, 6]];

const printArr = (someArr, fn) => console.log(fn(someArr));

printArr(testArr, array => array[0][0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...