想要多次“返回”

Want to `return` more than once

本文关键字:返回      更新时间:2023-09-26

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

只能返回一个值。第一次调用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;

通过这种方式,您可以通过循环遍历返回的数组并处理每行来在调用函数中处理输出。

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