2015-05-18 127 views
1

我迭代通過一些文件:檢查當前迭代元素是否是最後一個元素?

files.forEach((file) => { 
    fs.readFile(__dirname + `/${input}/` + file, 'utf8', (err, data) => { 
     let result = `${data}\n` 

     if (err) { 
     console.log(err) 
     } 

     fs.appendFile("book.txt", result, (err) => { 
     if (err) { 
      console.log(err) 
     } else { 
      console.log(result) 
     } 
     }) 
    }) 
    }) 

我想現在要做的是一樣的東西:

// If this is the last file: 
    let result = `${data}` 

// else: 
    let result = `${data}\n` 

有沒有什麼辦法,所以我可以檢查當前迭代元素是最後一個一?

回答

2

您傳遞給forEach()的函數將在第二個參數中使用當前項目的索引進行調用。可以比較的是指數與數組的長度,並寫上:

files.forEach((file, index) => { 
    if (index == files.length - 1) { 
     // This is the last file... 
    } 

    // [...] 

}); 
1

可以使用的承諾和Array.join()

var promisify = require("promisify-node"); 
var fs = promisify("fs"); 
Promise.all(files.map((file) => { 
    return fs.readFile(__dirname + `/${input}/` + file, 'utf8') 
})).then((data) => { 
    var result = data.join('\n') 
    return fs.appendFile("book.txt", result); 
}).then((result) => { 
    console.log(result) 
}, (err) => { 
    console.log(err) 
}); 
相關問題