Следующий скрипт транспонирует данный массив двумя способами. Оба выполняют свою работу, только я не понимаю, как работает второй метод.
//Define array
var a = [[1,2,3],[4,5,6]];
//Transpose
var b = a[0].map((col, i) => a.map(row => row[i]));
console.log(b); //[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]
//Transpose using callback
b = a[0].map(callbBackFunction(a));
b = a[0].map(callbBackFunction()); //Correction
console.log(b); //[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]
function callbBackFunction() {
return (col, ind) => a.map(row => row[ind]);
}
Эти два метода практически идентичны только во второй раз, когда извлечение функции callBack карты было извлечено во внешнюю функцию.
Я не понимаю, как переменной ind
в callBackFunction
присваивается ее значение, поскольку callBackFunction
не определяется и не вызывается с параметрами.
Функции карты вызываютобеспечивает обратный вызов, в данном случае callBackFunction
, с текущим индексом (а также с текущим элементом и сопоставленным массивом), но callBackFunction
не имеет параметров для принятия этого значения.
чтоя пропустил?
* изменить: это была опечатка:
b = a [0] .map (callbBackFunction ());
вместо
b = a [0] .map (callbBackFunction (a));