Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅用于循环打印阵列中的最后一项_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 仅用于循环打印阵列中的最后一项

Javascript 仅用于循环打印阵列中的最后一项,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我希望for循环打印出数组中的每一项,而不仅仅是最后一项。我想不出哪里出了问题: var patients = ["Julia", "Kelly", "Thomas", "Clare"]; function lineOfPatients(line) { if (!line.length) { return "Empty" } for(var i = 0; i < line.length; i++) { var list = `${i + 1}. ${line[i

我希望for循环打印出数组中的每一项,而不仅仅是最后一项。我想不出哪里出了问题:

var patients = ["Julia", "Kelly", "Thomas", "Clare"];

function lineOfPatients(line) {
 if (!line.length) {
     return "Empty"
 }
 for(var i = 0; i < line.length; i++) {
     var list = `${i + 1}. ${line[i]},`
 }
  return `The line is currently: ${list}`
}

 lineOfPatients(patients)
var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”
}
对于(变量i=0;i
返回“当前行为:4.Clare,”


我希望它返回“当前行为:1.Julia,2.Kelly,3.Thomas,4.Clare”

var list
正在您的循环中声明。这意味着将在每次提交时使用新值重新创建它。将此变量作为数组声明在循环之外。例如

var list = new Array();
然后,在循环中,添加到数组中

list[i] = .....

var列表
正在循环中声明。这意味着将在每次提交时使用新值重新创建它。将此变量作为数组声明在循环之外。例如

var list = new Array();
然后,在循环中,添加到数组中

list[i] = .....

您可以在包含行的
数组上调用
join
方法

var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”;
}
var行=[];
对于(变量i=0;iconsole.log(lineof patients(patients))
您可以在
数组中调用
join
方法,该数组将包含您的行

var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”;
}
var行=[];
对于(变量i=0;iconsole.log(lineOfPatients(patients))
您的问题是每次通过循环都要重新分配
list
变量,因此您要覆盖以前的值

为了避免这种情况,请使用
+=
运算符,而不是像这样使用
=
运算符:

var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”
}
var list=“”;
对于(变量i=0;iconsole.log(lineOfPatients(patients))
您的问题是每次通过循环都要重新分配
list
变量,因此您要覆盖以前的值

为了避免这种情况,请使用
+=
运算符,而不是像这样使用
=
运算符:

var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”
}
var list=“”;
对于(变量i=0;ilog(lineOfPatients(patients))
代码的问题是,在for循环的每次迭代中,都会重新声明
var list=`${i+1}${line[i]},`
以便在返回时,
list
仅等于数组中的最后一个元素

您可以这样做:

function lineOfPatients(line) {
  if (!line.length) {
    return "Empty"
  }
  var returnString = "The line is currently: "
  for(let i = 0; i < line.length; i++) {
    let patient = ` ${i + 1}. ${line[i]},`;
    returnString += patient;
  }
  return returnString;
}
患者功能线(线){
如果(!line.length){
返回“空”
}
var returnString=“该行当前为:”
for(设i=0;i
代码的问题是,在for循环的每次迭代中,都会重新声明
var list=`${i+1}${line[i]},`
以便在返回时,
list
仅等于数组中的最后一个元素

您可以这样做:

function lineOfPatients(line) {
  if (!line.length) {
    return "Empty"
  }
  var returnString = "The line is currently: "
  for(let i = 0; i < line.length; i++) {
    let patient = ` ${i + 1}. ${line[i]},`;
    returnString += patient;
  }
  return returnString;
}
患者功能线(线){
如果(!line.length){
返回“空”
}
var returnString=“该行当前为:”
for(设i=0;i
这是您想要的。(沉迷于代码高尔夫)

它不起作用的原因是您在每个循环上重新声明变量
list
。即使您将其移出循环,您也不会追加for循环的输出,而是分配它。它将始终是最后一个循环的输出。

这是您想要的。(沉迷于代码高尔夫)


它不起作用的原因是您在每个循环上重新声明变量
list
。即使您将其移出循环,您也不会追加for循环的输出,而是分配它。它将始终是最后一个循环的输出。

初始化
list
,然后使用
list+=…
list=…
初始化
list
,然后使用
list+=…
list=…
字符串串联就足够了。我想这取决于他们想如何处理这些物品。如果只是打印,那么是的。否则,将它们分开是有帮助的。同意-应该是
new Array()
[]
但字符串串联就足够了。我想这取决于他们想如何处理这些物品。如果只是打印,那么是的。否则将它们分开会有帮助。同意-应该是
new Array()
[]
尽管这是最好的解决方案,IMO@mhodges,谢谢你,伙计!两全其美,很好。这是最好的解决方案,IMO@mhodges,谢谢你,伙计!两全其美,很好。