我在迭代一些文件:
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`
有什么办法可以检查当前的迭代元素是否是最后一个?
答案 0 :(得分:2)
您传递给forEach()的函数将使用第二个参数中的当前项目索引进行调用。您可以将该索引与数组的长度进行比较并写入:
files.forEach((file, index) => {
if (index == files.length - 1) {
// This is the last file...
}
// [...]
});
答案 1 :(得分:1)
您可以使用promises和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)
});