2014-06-22 114 views
0

下面的每条语句都做了什么? 'col'是数组的内置属性吗?下面的.forEach语句做了什么?

var width = data.length, height = data[0].length; 
    data.forEach(function(col){ 
    col.forEach(function(val){ 
     geometry.vertices.push(new THREE.Vector3(val.x,val.y,val.z)) 
     colors.push(getColor(2.5,0,val.z)); 
    }); 
    }); 

在一些情况下,前面的代码的需要:

var data = new Array(); 
    for(var x=BIGIN;x<END;x++){ 
    var row = []; 
    for(var y=BIGIN;y<END;y++){ 
     z = 2.5*(Math.cos(Math.sqrt(x*x+y*y))+1); 
     row.push({x: x, y: y, z: z}); 
    } 
    data.push(row); 
    } 
+0

看到这里https://developer.mozilla.org/en-US/docs/Web/JavaScript的/参考/ Global_Objects /阵列/的forEach – elclanrs

回答

1

Array.forEach遍历阵列,就像一个for回路。

array.forEach(function(indice) {}); 

data阵列阵列的,col是从第一forEach传递的参数,所以内部data第二forEach迭代阵列。

很明显在创建data以及

var data = []; // data is an array 
... 
var row = []; // row is an array 
for(var ...){ 
    // do stuff 
} 
data.push(row); // put one array inside the other 

代码,然后它的迭代

data.forEach(function(col){ // <- col is passed as the argument 
    col.forEach(function(val){ 
     // do stuff 
    }); 
});