Nodejs文件系统数组排序数字

时间:2016-10-25 17:29:42

标签: javascript node.js

我的nodejs应用程序读取一些图像文件。但它按字母顺序排序。

在Node的左侧是什么,在右侧看它应该是什么样的。

enter image description here enter image description here

我的Nodejs代码是:

var files = fs.readdirSync('./public/manga/' + req.params.name).map(function(item){
    var subfolders = fs.readdirSync('./public/manga/' + req.params.name + '/' + item);
    return {
        chapter: item,
        paths: subfolders.map(function (i) {
            return "manga/" + req.params.name + "/" + item + "/" + i;
        })
    }
})
res.json(files);
});

我尝试并且没有工作。

var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){ //Array now becomes [7, 8, 25, 41]
return a - b
})

2 个答案:

答案 0 :(得分:1)

您正在寻找natural sort订单。那里有很多的例子。

它有一个很好的npm模块https://github.com/Bill4Time/javascript-natural-sort

您还可以实现快速功能,并且有很多很好的例子:

答案 1 :(得分:0)

此处的问题将出现在包含字母的文件名中。但是从你的例子开始,节点已经按照正确的顺序排序了00Letter,我有这样的简单解决方案

var a = ["10.jpg", "00a.jpg", "5.jpg", "00c.jpg", "3.jpg", "00b.jpg"];

var b = a.sort(function(a,b) {
  return parseInt(a) > parseInt(b);
});

console.log(b);
//output 
["00a.jpg", "00c.jpg", "00b.jpg", "3.jpg", "5.jpg", "10.jpg"]

<强>更新 正如@Ding所说。最好创建捕获所有内容的自定义函数,而不是希望节点排序。

希望这有帮助。