Node fs.readdir 读取文件顺序代码求解惑

最近在对 Node 中 fs.readdir 进行调试,其中读取出来的数组文件顺序不是按寻常的字母序来排列,就进行了一些搜索
看到下面的代码中


function compareFiles(a,b) {
    return b.isDirectory() - a.isDirectory() || a.name > b.name ? 1 : -1
  }

fs.readdir(currentDir, { withFileTypes: true }, function (err, items) {
    items.sort(compareFiles);
    for (var i = 0; i < items.length; i++) {
        if (!items[i].name.startsWith(".")) {
            if (items[i].isFile()) {
               //append file name somewhere
            } else {
               //append directory name somewhere
            }
        }
    }
});

出处 fs.readdirSync目录优先

想问 return b.isDirectory() - a.isDirectory() || a.name > b.name ? 1 : -1 这一句是什么意思,怎么运行的

阅读 5.4k
1 个回答

b.isDirectory() - a.isDirectory() 返回的是 truefalse 可用来计算

      true  -  true  //  0
      false - false  //  0
      true  -  false //  1
      false - true   // -1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题