https://leetcode.com/problems/transpose-matrix/discuss/147063/JS-one-line-solution
/**
* @param {number[][]} A
* @return {number[][]}
*/
var transpose = function(A) {
return A[0].map((val, ind) => A.map(row => row[ind]));
};
我很难理解A[0].map((val, ind) => A.map(row => row[ind]))
部分。
我认为A[0].map((val, ind)
是提取索引的目的。
但是我不了解=> A.map(row => row[ind])
。地图方法和箭头功能交织在一起,难以理解。
您能以一种易于理解的方式向我解释吗?
答案 0 :(得分:1)
map
方法用于创建新数组,以针对输入Array的每个值调用特定函数。
您的功能等同于
var transpose = function(A) {
return A[0].map(function(val, ind){
return A.map(function(row){
return row[ind];
});
} );
};
或仅以函数形式
var transpose = function(A) {
var outerArr = [];
A[0].forEach(function(val,ind){
var innerArr = [];
A.forEach(function(row){
innerArr.push(row[ind]);
});
outerArr.push(innerArr);
})
return outerArr;
};
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map