从fs.readdir获取数字排序的.json文件数组的简单方法?

时间:2017-12-27 00:36:24

标签: javascript node.js sorting fs

有没有更简单的方法来对它们进行排序?当我使用readdir时,它以这样的方式给它:1,10,11,12 ... 19,2,20等。这种方式遍历所有这些并删除“.json”结尾,然后以数字方式对它们进行排序(这将在数字上正常工作,而不是字符串),然后将“.json”添加回到最后。有没有更好的方法呢?

fs.readdir("data/items/", function(err,files) {
for(i = 0; i < files.length; i++) {
    files[i] = files[i].split(".")[0];
}
files = files.sort(function(a,b){return a-b});
for(i = 0; i < files.length; i++) {
    files[i] += ".json";
}

//load the files.. etc.

});

1 个答案:

答案 0 :(得分:0)

fs.readdir("data/items/", function(err,files) {
  files.sort(function(a, b){
    return a.split(".")[0] - b.split(".")[0];
  });

  //load the files.. etc.
});

如果您信任文件的名称都很好,那就足够了。

sort method sorts到位了。并且在排序之前不需要分离所有前缀然后重新附加,compare函数可以保持该逻辑独立,并且files var始终保持文件名列表。