不止一次想要`return`
Want to `return` more than once
我想 return 多行(每次 for 循环循环时一行),但它只是 return 第一行。我试图为 return 行编写一个函数,但我遇到了错误,因为我不知道将它放在哪里。
这样做的好方法是什么?
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;
}
您只能return一个值。第一次调用 return
结束你的函数。您也无法通过将 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;
这样,您可以通过遍历 returned 数组并处理每一行来处理调用函数中的输出。
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;
return
关键字在函数中使用,你仍然可以使用map
数组方法
循环testArray
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 ];
};
我想 return 多行(每次 for 循环循环时一行),但它只是 return 第一行。我试图为 return 行编写一个函数,但我遇到了错误,因为我不知道将它放在哪里。
这样做的好方法是什么?
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;
}
您只能return一个值。第一次调用 return
结束你的函数。您也无法通过将 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;
这样,您可以通过遍历 returned 数组并处理每一行来处理调用函数中的输出。
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;
return
关键字在函数中使用,你仍然可以使用map
数组方法
testArray
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 ];
};