不止一次想要`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 ];
};