2017-04-12 13 views
0

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) 

これは「行が現在ある:4.クレア、」返し

私はそれを返すようにしたい「行が現在ある:1.ジュリア、2 。ケリー、トーマス、4.クレア "

+3

'' ''を '' ''に初期化し、 '' list + = ... '' list = ... 'を使用しないでください。 – mhodges

答えて

2

あなたの行が含まれていますlinesアレイ上joinメソッドを呼び出すことができます。

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

 
function lineOfPatients(line) { 
 
    if (!line.length) { 
 
     return "Empty"; 
 
    } 
 

 
    var lines = []; 
 

 
    for(var i = 0; i < line.length; i++) { 
 
     var list = `${i + 1}. ${line[i]}` 
 
     lines.push(list) 
 
    } 
 

 
    return `The line is currently: ${lines.join(", ")}` 
 
} 
 

 
console.log(lineOfPatients(patients))

+1

これは最高の解決策です、IMO – mhodges

+0

@mhodges、ありがとうございます! –

+0

両方の世界のベスト、素敵です。 – Lewis

0

var listはあなたのループ内で宣言されています。これは、各反復で新しい値で再作成されていることを意味します。この変数をループ外で配列として宣言します。例:

var list = new Array(); 

次に、ループ内で配列に追加します。

list[i] = ..... 
+1

ここでは文字列の連結で十分です – mhodges

+0

真です。私はそれが彼らがアイテムで何をしたいのかに依存していると思う。それが印刷されている場合は、はい。それ以外の場合は、それらを分けると便利です。 – Lewis

+1

合意 - – mhodges

1

あなたの問題は、ループをlist変数を毎回再割り当てされているので、あなたが前の値を上書きしていることです。

これを回避するには、そのように代わり=オペレータの+=演算子を使用します。

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

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

 
console.log(lineOfPatients(patients))

1

あなたのコードに問題があること、あなたのforループの各反復で、あなた返信時にlistが配列の最後の要素と同じになるようにvar list = `${i + 1}. ${line[i]},`を再宣言してください。

あなたはこれを行うことができます:

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

はここで何をしたいのです。あなたはすべてのループ上の変数listを再宣言するので、それは働いていない理由がある

const patients = ["Julia", "Kelly", "Thomas", "Clare"] 

const lineOfPatients = (line) => "The line is currently: " + (!line || !line.length) ? "Empty" : line.map((patient, idx) => `${idx + 1}. ${patient}`).join(', ') 

console.log(lineOfPatients(patients)) 

(ガットは、コードゴルフに運び去ら)。たとえあなたがループからそれを移動したとしても、forループの出力を追加せずに、それを割り当てます。それは常に最後のループからの出力です。

関連する問題