2014-03-03 51 views
-1

我有下面的代碼產生輸出如何在Javascript中的最後一行附加逗號?

輸出

abc : 1 
def : 2 
ghi : 3 

代碼

var fso, f1, ts, s; 
var ForReading = 1; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
// Read the contents of the file. 
Session.Output("Reading file"); 
ts = fso.OpenTextFile("c:\\temp\\text.txt", ForReading); 
s = ts.ReadAll(); 
u = s.split('\r\n'); 
for(i = 0; i < u.length; i++){ 
m = u[i].split(","); 
var z = m[0] + " : " + (m[0] = m[1]); 
} 
ts.Close(); 

我所需要的輸出如下;

abc : 1, 
    def : 2, 
    ghi : 3 
+2

把所有的部件到一個數組中,並調用'。加入( 「\ n」)'什麼 – Ian

+0

@Ian - 你有一個例子嗎?我對數組,連接和分裂都很陌生 – PeanutsMonkey

+0

建議:(a)'var'你的局部變量。 (b)使用明智的變量名稱。 (c)'m [0] = m [1]'你是否意指'=='? – Phrogz

回答

0

只是一個逗號添加到所有,但for循環的最後一次迭代。

var fso, f1, ts, s; 
var ForReading = 1; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
// Read the contents of the file. 
Session.Output("Reading file"); 
ts = fso.OpenTextFile("c:\\temp\\text.txt", ForReading); 
s = ts.ReadAll(); 
u = s.split('\r\n'); 
for(i = 0; i < u.length; i++){ 
    m = u[i].split(","); 
    var z = m[0] + " : " + (m[0] = m[1]); 
    if(i != u.length - 1){ //<--- 
     z = z + ","; 
    } 
    console.log(z + "\n"); //something like this... 
} 
ts.Close(); 
1

你想Array.prototype.join()

var commaDelimited = lines.join(",\n"); 

這需要一個數組,如果有必要呼籲toString()每個條目上,並與您提供的字符串加入他們。

你的情況:

var lines = s.split('\r\n'); 
var result = []; 
for (var i=0; i<lines.length; i++){ 
    var parts = lines[i].split(","); 
    result.push(parts[0] + " : " + parts[1]); 
} 
var output = result.join(",\n"); 

另外,使用Array.prototype.map()和編程更功能風格:

var output = s.split('\r\n').map(function(line){ 
    return line.split(",").join(" : "); 
}).join(",\n"); 
+0

我認爲這可能是加入,但我不確定如何使用它在我的例子。 – PeanutsMonkey

+0

@PananutsMonkey查看最新的答案。 – Phrogz

+0

這並不奏效。輸出重複,它不正確,例如'abc,1:def,2' – PeanutsMonkey

相關問題