【发布时间】:2017-12-27 13:04:43
【问题描述】:
有没有更简单的方法来排序这些?当我使用 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.
});
【问题讨论】:
-
有文件名的例子吗?
-
提供
data/items文件夹中所有文件的列表。 -
您当前的示例从不按数字对任何内容进行排序。 (需要确定文件名示例)但您似乎有
0.json、1.json、...20.json等。您在排序中的比较 fn 是比较字符串,因为您从未将文件前缀转换为数字。 -
我有这些文件: 0.json 1.json 10.json 2.json 20.json 22.json 3.json 如果我直接从 readdir 中提取它们,它们就是按这个顺序排列的。通过阅读第一个“字母”,然后如果两个匹配,则阅读第二个。但是,以我的方式使用它,它按预期返回。 0.json 1.json 2.json 3.json 10.json 20.json 22.json i.imgur.com/i5dnlao.png
标签: javascript node.js sorting fs