map()方法:构建一个数组,这个数组中,每个元素都是 调用所提供的回调函数的返回值
在JavaScript学习中遇到了这样一个关于回调函数的练习,在这里做个笔记:
// 实现n*n的二维数组转置
var arr = [['a','b','c'],['d','e','f'],['g','h','i']];
var reverse = arr[1].map(function(value,index){
return arr.map(function (row){
return row[index];
})
});
对于初学者,理解起来可能有点困难。可以先看这样一段代码:
var arr = [['a','b','c'],['d','e','f'],['g','h','i']];
var t0 = arr.map(function (row){
return row[0];
});
var t1 = arr.map(function (row){
return row[1];
});
var t2 = arr.map(function (row){
return row[2];
});
运行之后,t1 = [‘b’,‘e’,‘h’];
- 回调函数里的row,就是arr的各行;row[index]就是逐次返回每一行的第index列上的元素。这样,我们就很容易明白,最初的例子中,转置的过程就是通过map方法得到了一个数组:[t0,t1,t2]。
- 值得说明的一点是,
arr[1].map(...)
中,arr[i]的元素序号并不重要,我们只是希望得到其中一维数组的每个元素的index(0,1,2,…n)。