首页 > 解决方案 > 无法在函数中返回值/变量

问题描述

当我 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 循环,因为我想训练我的逻辑;),谁能帮我找出问题所在?或解决这个问题?谢谢你

标签: javascriptarraysloopsfor-loopmultidimensional-array

解决方案


该函数在循环的第一次迭代之后返回。这会阻止其余的迭代执行。您必须从函数返回一个数组。您可以将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))


推荐阅读