JavaScriptで2次元配列をソートするのを手伝ってくれる人はいますか?
次の形式のデータが含まれます。
[12, AAA]
[58, BBB]
[28, CCC]
[18, DDD]
ソートすると、次のようになります。
[12, AAA]
[18, DDD]
[28, CCC]
[58, BBB]
基本的に、最初の列でソートします。
乾杯
JavaScriptで2次元配列をソートするのを手伝ってくれる人はいますか?
次の形式のデータが含まれます。
[12, AAA]
[58, BBB]
[28, CCC]
[18, DDD]
ソートすると、次のようになります。
[12, AAA]
[18, DDD]
[28, CCC]
[58, BBB]
基本的に、最初の列でソートします。
乾杯
それはとても簡単です:
var a = [[12, 'AAA'], [58, 'BBB'], [28, 'CCC'],[18, 'DDD']];
a.sort(sortFunction);
function sortFunction(a, b) {
if (a[0] === b[0]) {
return 0;
}
else {
return (a[0] < b[0]) ? -1 : 1;
}
}
ドキュメントを読むことをお勧めします。
2 番目の列で並べ替えたい場合は、次のようにします。
a.sort(compareSecondColumn);
function compareSecondColumn(a, b) {
if (a[1] === b[1]) {
return 0;
}
else {
return (a[1] < b[1]) ? -1 : 1;
}
}
最初の列に繰り返し値がある可能性があるため、次の方法を使用するのが最善の方法です。
var arr = [[12, 'AAA'], [12, 'BBB'], [12, 'CCC'],[28, 'DDD'], [18, 'CCC'],[12, 'DDD'],[18, 'CCC'],[28, 'DDD'],[28, 'DDD'],[58, 'BBB'],[68, 'BBB'],[78, 'BBB']];
arr.sort(function(a,b) {
return a[0]-b[0]
});
アロー関数を使用し、2 番目の文字列フィールドで並べ替える
var a = [[12, 'CCC'], [58, 'AAA'], [57, 'DDD'], [28, 'CCC'],[18, 'BBB']];
a.sort((a, b) => a[1].localeCompare(b[1]));
console.log(a)
あなたが私のような人なら、並べ替える列を変更するたびに各インデックスを変更したくないでしょう。
function sortByColumn(a, colIndex){
a.sort(sortFunction);
function sortFunction(a, b) {
if (a[colIndex] === b[colIndex]) {
return 0;
}
else {
return (a[colIndex] < b[colIndex]) ? -1 : 1;
}
}
return a;
}
var sorted_a = sortByColumn(a, 2);
一行で:
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}
]
function myFunction() {
return cars.sort((a, b)=> a.year - b.year)
}
配列から特定のインデックスの値を返すのにかかるコストを節約するだけで、特別なことは何もありません。
function sortByCol(arr, colIndex){
arr.sort(sortFunction)
function sortFunction(a, b) {
a = a[colIndex]
b = b[colIndex]
return (a === b) ? 0 : (a < b) ? -1 : 1
}
}
// Usage
var a = [[12, 'AAA'], [58, 'BBB'], [28, 'CCC'],[18, 'DDD']]
sortByCol(a, 0)
console.log(JSON.stringify(a))
// "[[12,"AAA"],[18,"DDD"],[28,"CCC"],[58,"BBB"]]"