Javascript 检查当前迭代元素是否是最后一个元素?

Javascript 检查当前迭代元素是否是最后一个元素?,javascript,Javascript,我正在遍历一些文件: 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) =&

我正在遍历一些文件:

  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`
有没有办法检查当前迭代元素是否是最后一个元素?

传递给的函数将在第二个参数中使用当前项的索引进行调用。您可以将该索引与数组的长度进行比较并写入:

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

    // [...]

});
你可以用承诺和承诺

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