Javascript 仅用于循环打印阵列中的最后一项
我希望for循环打印出数组中的每一项,而不仅仅是最后一项。我想不出哪里出了问题: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
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;i console.log(lineof patients(patients))
您可以在行
数组中调用join
方法,该数组将包含您的行
var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”;
}
var行=[];
对于(变量i=0;i console.log(lineOfPatients(patients))
您的问题是每次通过循环都要重新分配list
变量,因此您要覆盖以前的值
为了避免这种情况,请使用+=
运算符,而不是像这样使用=
运算符:
var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”
}
var list=“”;
对于(变量i=0;i console.log(lineOfPatients(patients))
您的问题是每次通过循环都要重新分配list
变量,因此您要覆盖以前的值
为了避免这种情况,请使用+=
运算符,而不是像这样使用=
运算符:
var患者=[“朱莉娅”、“凯利”、“托马斯”、“克莱尔”];
患者功能线(线){
如果(!line.length){
返回“空”
}
var list=“”;
对于(变量i=0;i log(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,谢谢你,伙计!两全其美,很好。