请描述此JavaScript函数表示形式

时间:2018-07-10 09:30:12

标签: javascript algorithm transpose array-algorithms

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])。地图方法和箭头功能交织在一起,难以理解。

您能以一种易于理解的方式向我解释吗?

1 个答案:

答案 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