我想返回多行(每次for循环转换一行),但它只返回第一行。我试着写一个函数只是为了返回该行,但我得到了错误,因为我不知道把它放在哪里。
这样做的好方法是什么?
for (var i = 0; i < testArray.length; i +=3) {
geometry.vertices.push(
new THREE.Vector3( testArray[i], testArray[i + 1], testArray[i + 2] ),
new THREE.Vector3( testArray[i + 3], testArray[i + 4], testArray[i + 5] ));
var line = new THREE.Line(geometry, material);
return line;
// or if using function, returnLine(line);
}
尝试功能:
function returnLine(line) {
return line;
}
答案 0 :(得分:3)
您只能返回一个值。 return
的第一次调用结束了您的功能。您无法通过将return
语句包装在另一个函数中来解决此问题。
包含您希望在数组中返回的值,这允许您在调用函数中访问所有这些值:
var output = new Array();
for (var i = 0; i < testArray.length; i +=3) {
geometry.vertices.push(
new THREE.Vector3( testArray[i], testArray[i + 1], testArray[i + 2] ),
new THREE.Vector3( testArray[i + 3], testArray[i + 4], testArray[i + 5] ));
var line = new THREE.Line(geometry, material);
output.push(line);
}
return output;
这样,您可以通过循环返回的数组并处理每一行来处理调用函数中的输出。
答案 1 :(得分:1)
var lines = [];
for (var i = 0; i < testArray.length; i +=3) {
geometry.vertices.push(
new THREE.Vector3( testArray[i], testArray[i + 1], testArray[i + 2] ),
new THREE.Vector3( testArray[i + 3], testArray[i + 4], testArray[i + 5] ));
var line = new THREE.Line(geometry, material);
lines.push(line);
}
return lines;
答案 2 :(得分:-1)
return
关键字,您仍然可以使用testArray
数组方法循环map
var testArray = [1, 2, 3], //whatever
newArray = [];
newArray = testArray.map(function(element, i){
geometry.vertices.push(
new THREE.Vector3( testArray[i], testArray[i + 1], testArray[i + 2] ),
new THREE.Vector3( testArray[i + 3], testArray[i + 4], testArray[i + 5] ));
var line = new THREE.Line(geometry, material);
return line;
});
function returnLine(index) {
return newArray[ index || 0 ];
};