二次元配列をソートしたい
2番目の数値が小さい順に、名前順でソートしたい。
ファイラーのようにフォルダの後にファイルが並ぶ。
配列の1番目の値が名前です。
二番目の値は0がフォルダ、1がファイルとして付けます。
次のコードを実行すると2番目の値に沿ってソートはされますが、配列の内容によっては名前順にソートされません。
var ary = [
['あ0', 0],
['b', 0],
['c.txt', 1],
['た', 0],
['e', 0],
['ぜ.txt', 1],
['a', 0],
['a.txt', 1],
['d', 0],
['あ', 0],
['c', 0],
['b.txt', 1],
];
ary.sort(function(a, b) {
return (a[1] - b[1]) || (a[0] > b[0]);
});
for (var i = 0; i < ary.length; i++) {
console.log('%d: %s', ary[i][1], ary[i][0]);
}
次の配列に差し替えるとうまくソートできました。
var ary = [
['あ0', 0],
['b', 0],
['c.txt', 1],
['た', 0],
['e', 0],
['ぜ.txt', 1],
['a', 0],
// ['a.txt', 1],
['d', 0],
['あ', 0],
['c', 0],
['b.txt', 1],
];
アドバイスお願いします。