想要不止一次“回归”

时间:2015-06-05 16:54:44

标签: javascript three.js return

我想返回多行(每次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;
}

3 个答案:

答案 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 ];
};