【GAS】目的別sortメソッドの記述方法(一次元配列・二次元配列の並び替え)
sortメソッドの用いた一次元配列、二次元配列の並び替え記述方法を目的別にご紹介します。
本記事で紹介している記述の裏側の仕様やsortメソッドについての詳細は下記の記事で解説しています。
目次
一次元配列の並び替え
文字列の昇順(デフォルト)
let animal = let animal = ['dog', 'tiger', 'elephant', 'cat', 'lion', 'monkey'];
console.log(animal.sort()); //[ 'cat', 'dog', 'elephant', 'lion', 'monkey', 'tiger' ]
文字列の降順
let animal = let animal = ['dog', 'tiger', 'elephant', 'cat', 'lion', 'monkey'];
//文字列の降順
animal.sort((a, b) => {
if(b > a){
return 1;
}else{
return -1;
}
});
console.log(animal); // [ 'tiger', 'monkey', 'lion', 'elephant', 'dog', 'cat' ]
数字の昇順
let numbers = [6, 90, 20, 3, 10, 55];
numbers.sort((a, b) => {return a - b;} );
console.log(numbers);//[ 3, 6, 10, 20, 55, 90 ]
//デフォㇽトの文字列昇順ではうまくいかない
let numbers = [6, 90, 20, 3, 10, 55];
numbers.sort();
console.log(numbers);//[ 10, 20, 3, 55, 6, 90 ]
数字の降順
let numbers = [6, 90, 20, 3, 10, 55];
numbers.sort((a, b) => {return b - a;} );
console.log(numbers); //[ 90, 55, 20, 10, 6, 3 ]
二次元配列の並び替え
1列目(文字列)基準の昇順(デフォルト)
let array = [['dog', 6], ['tiger', 90], ['elephant', 20], ['cat', 30], ['lion', 10], ['monkey', 55] ]
array.sort();
console.log(array);
// [ [ 'cat', 30 ],
// [ 'dog', 6 ],
// [ 'elephant', 20 ],
// [ 'lion', 10 ],
// [ 'monkey', 55 ],
// [ 'tiger', 90 ] ]
1列目(文字列)基準の降順
let array = [['dog', 6], ['tiger', 90], ['elephant', 20], ['cat', 30], ['lion', 10], ['monkey', 55] ]
array.sort((a, b) => {
if(b > a){
return 1;
}else{
return -1;
}
});
console.log(array);
// [ [ 'tiger', 90 ],
// [ 'monkey', 55 ],
// [ 'lion', 10 ],
// [ 'elephant', 20 ],
// [ 'dog', 6 ],
// [ 'cat', 30 ] ]
2列目(数字)基準の昇順
let array = [['dog', 6], ['tiger', 90], ['elephant', 20], ['cat', 30], ['lion', 10], ['monkey', 55] ]
array.sort((a, b) => {return a[1] - b[1];} );
console.log(array);
// [ [ 'dog', 6 ],
// [ 'lion', 10 ],
// [ 'elephant', 20 ],
// [ 'cat', 30 ],
// [ 'monkey', 55 ],
// [ 'tiger', 90 ] ]
2列目(数字)基準の昇順
let array = [['dog', 6], ['tiger', 90], ['elephant', 20], ['cat', 30], ['lion', 10], ['monkey', 55] ]
array.sort((a, b) => {return b[1] - a[1];} );
console.log(array);
// [ [ 'tiger', 90 ],
// [ 'monkey', 55 ],
// [ 'cat', 30 ],
// [ 'elephant', 20 ],
// [ 'lion', 10 ],
// [ 'dog', 6 ] ]
複数条件の指定
let array = [['dog', 6], ['cat', 90], ['elephant', 20], ['cat', 30], ['dog', 10], ['monkey', 55] ]
//複数条件の指定、名前→昇順、数値→降順
array.sort((a, b) => {
if(b[0] < a[0]){
return 1;
}else if((b[0] > a[0])){
return -1;
}else{
if(b[1] < a[1]){
return -1;
}else{
}
}
});
console.log(array);
// [ [ 'cat', 90 ],
// [ 'cat', 30 ],
// [ 'dog', 10 ],
// [ 'dog', 6 ],
// [ 'elephant', 20 ],
// [ 'monkey', 55 ] ]
オブジェクトの並び替え
let array = [ {'name':'Bob', 'age':17, 'score':82},
{'name':'Cassie', 'age':18,'score':97},
{'name':'Tom', 'age':16, 'score':90} ]
array.sort((a, b) => {
if(b.score > a.socre){
return 1;
}else{
return -1;
}
});
console.log(array);
// [ { name: 'Tom', age: 16, score: 90 },
// { name: 'Cassie', age: 18, score: 97 },
// { name: 'Bob', age: 17, score: 82 } ]
console.log(JSON.stringify(array));
// [{"name":"Tom","age":16,"score":90},
// {"name":"Cassie","age":18,"score":97},
// {"name":"Bob","age":17,"score":82}]