2016-10-25 6 views
0

MY nodejs appがイメージファイルを読み込んでいます。しかし、アルファベット順にソートしています。Nodejsファイルシステム配列のソート数値

左側にはNodejsにはどのようなものがあり、右側にはどのように見えますか?

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

私がしようとしてdidntの仕事は何。

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

どうしたの? –

+0

ファイル名は文字列で、英数字でソートされています。 00、01、02、03などのファイルに名前を付けた場合は、必要に応じてソートされます。 –

答えて

0

あなたはnatural sortの注文を探しています。そこにはのロットがあります。

いいえnpmモジュールがあります。https://github.com/Bill4Time/javascript-natural-sortです。

また、迅速な機能を実装することができますし、良い例がたくさんあります。ここで

+0

ありがとうございます。このサイトのトピックは、この問題を解決します。 – Nasuh

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"] 

UPDATE @Dingは、前述のようにのような単純な解決策を持っています。すべてをキャプチャし、ノードソートも望んでいないカスタム関数を作成する方がよいでしょう。

これが役に立ちます。

関連する問題