Array.map的概念是什么?

18 javascript arrays jquery mozilla array-map

我在理解这个概念时遇到了问题Array.map.我确实去过Mozilla和Tutorials Point,但他们提供的信息非常有限.

这就是我的使用方式Array.map.这有点复杂(涉及到一些d3.js;只是忽略它)

var mapCell = function (row) {
    return columns.map(function(column) {
        return { column : column, value : getColumnCell(row, column) }
    })
}
//getColumnCell is a function defined in my code
//columns is array defined at the top of my code
Run Code Online (Sandbox Code Playgroud)

我不明白这段代码到底在做什么.我知道它返回了一个新阵列和东西,但这部分有点棘手!

如果你想通过我的代码:http://jsfiddle.net/ddfsb/2/

更新1

我正在使用控制台来实际了解代码中发生的事情.看看提供的答案,我已经清楚地理解了它的概念array.map.现在剩下的唯一部分是参数行和列,但是行和行之间存在差异,并且提供了小提琴中的列和列

var rows//completely ok
var columns//completely ok
funcion(row)//here,source of row is unknown.getColumncell function utilizes this parameter further making it more critical
function(column)//source of column is unknown..getColumncell function utilizes this parameter further making it more critical
Run Code Online (Sandbox Code Playgroud)

任何帮助?

SWe*_*eko 17

让我们重写一下,然后从内到外开始工作.

var mapCell = function (row) {
  return columns.map(
    function(column) {
      return { 
        column : column, 
        value : getColumnCell(row, column)
      }
    }
  )
}
Run Code Online (Sandbox Code Playgroud)

function(column)部分本质上是一个以列作为参数的函数,并返回一个具有两个属性的新对象:

  • 列,即参数的原始值,和
  • value,即在行(外部变量)和列(参数)上调用getColumnCell函数的结果

columns.map()部分调用Array.map函数,它接受一个数组和一个函数,并为它的每个最后一项运行函数,并返回结果.即如果输入是数组[1, 2, 3, 4, 5]并且函数类似isEven,则结果将是数组[false, true, false, true, false].在您的情况下,输入是列,输出是对象列表,每个对象都有一列和一个值属性.

最后,该var mapCell = function (row)部分声明该变量mapCell将包含一个名为的变量的函数row- 这row与内部函数中使用的相同.

在一行中,这行代码声明了一个函数,该函数在运行时将占用一行并返回该行的所有列的值.