繁体   English   中英

不能在函数中返回值/变量

[英]can't return value/variable in a function

当我 console.log 它显示所有数组为字符串时,因为在我的数组中,它们是多维的; 在函数中使用 console.log 查看下面的代码,没有返回但未定义

 function changeStrings(arr, replacement) { var newArr = [] for ( var i = 0 ; i < arr.length ; i++) { newArr.push(arr[i].split(" ")) } for ( var j = 0 ; j < replacement.length ; j++ ) { newArr[0][3] = replacement[j-2] newArr[1][3] = replacement[j-1] newArr[2][4] = replacement[j] } for ( var k = 0 ; k < newArr.length ; k++ ) { console.log(newArr[k].join(" ")) } }; let initial = ["my city in London", "my name is Mike", "my phone number is 00909090"]; let replacements = ['Paris', 'John', '1234']; console.log(changeStrings(initial, replacements))

如果我使用 return ,它只打印一行;

检查这个

 function changeStrings(arr, replacement) { var newArr = [] for ( var i = 0 ; i < arr.length ; i++) { newArr.push(arr[i].split(" ")) } for ( var j = 0 ; j < replacement.length ; j++ ) { newArr[0][3] = replacement[j-2] newArr[1][3] = replacement[j-1] newArr[2][4] = replacement[j] } for ( var k = 0 ; k < newArr.length ; k++ ) { var dispplay = newArr[k].join(" ") return dispplay } }; // now let's test out our functions! let initial = ["my city in London", "my name is Mike", "my phone number is 00909090"]; let replacements = ['Paris', 'John', '1234']; console.log(changeStrings(initial, replacements))

newArr 变量是数组多维,它看起来像这样;

[ [ 'my', 'city', 'in', 'Paris' ],
  [ 'my', 'name', 'is', 'John' ],
  [ 'my', 'phone', 'number', 'is', '1234' ] ]

我正在尝试在这种情况下使用 for 循环,因为我想训练我的逻辑;),谁能帮我找出问题所在? 或解决这个问题? 谢谢你

该函数在循环的第一次迭代后立即返回。 这会阻止执行其余的迭代。 您必须从函数返回一个数组。 您可以push()所有项目push()到循环内的数组,然后返回数组:

 function changeStrings(arr, replacement) { var newArr = [] for ( var i = 0 ; i < arr.length ; i++) { newArr.push(arr[i].split(" ")) } for ( var j = 0 ; j < replacement.length ; j++ ) { newArr[0][3] = replacement[j-2] newArr[1][3] = replacement[j-1] newArr[2][4] = replacement[j] } var display = []; for ( var k = 0 ; k < newArr.length ; k++ ) { display.push(newArr[k].join(" ")); } return display }; // now let's test out our functions! let initial = ["my city in London", "my name is Mike", "my phone number is 00909090"]; let replacements = ['Paris', 'John', '1234']; console.log(changeStrings(initial, replacements))

问题是return语句立即结束整个循环(与break相同)。 如果你想完成循环,你不能像那样直接返回。 另一方面,您可以有目的地使用它来结束循环,例如,如果您找到了所需的项目并且不再需要循环。

如何在循环中实际使用 return:

let fruit = ['apple', 'orange', 'pear', 'strawbery'];
let myFavoriteFruit === 'orange';

const IncludesMyFavouriteFruit = (list) => {
    for (let item of list) {
        if (item === myFavoriteFruit) return true;  // Ends the loop; we'll never get to 'pear' and 'strawbery'.
    }
    return false; // There is not my favourite fruit.
}

抱歉用ES6,懒得写老JS了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM