javascript nullを含んだ配列をソートする
- 作成日 2022.08.11
- javascript
- javascript
javascriptで、nullを含んだ配列をソートするサンプルコードを記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 104.0.5112.81
nullを含んだ配列をソート
「sort()」を使用すると、配列内に「null」を含んでいると「null」自体が「ソート」の対象となってしまします。
※「sort()」を使用すると、元の値もソートされます。
const arr = ['nt', null, 'b', null, 'nv', null, 'a', null, 'z'];
console.log( arr.sort() );
// ['a', 'b', 'nt', null, null, null, null, 'nv', 'z']
console.log( arr );
// ['a', 'b', 'nt', null, null, null, null, 'nv', 'z']
実行結果
「null」は、「null」でまとめてソートしたい場合は、以下のように「コールバック関数」を使用して、条件を指定します。
const arr = ['nt', null, 'b', null, 'nv', null, 'a', null, 'z'];
console.log( arr.sort((x, y) => {
if (x === null) {
return 1;
}
if (y === null) {
return -1;
}
if (x === y) {
return 0;
}
return x < y ? -1 : 1;
}) );
// ['a', 'b', 'nt', 'nv', 'z', null, null, null, null]
console.log( arr );
// ['a', 'b', 'nt', 'nv', 'z', null, null, null, null]
実行結果
降順
降順にするには、「return」する条件を変更します。
const arr = ['nt', null, 'b', null, 'nv', null, 'a', null, 'z'];
console.log( arr.sort((x, y) => {
if (x === null) {
return 1;
}
if (y === null) {
return -1;
}
if (x === y) {
return 0;
}
return x < y ? 1 : -1;
}) );
// ['z', 'nv', 'nt', 'b', 'a', null, null, null, null]
console.log( arr );
// ['z', 'nv', 'nt', 'b', 'a', null, null, null, null]
実行結果
元の値を変えない
元の値を変えたくない場合は、スプレッド構文を使用します。
const arr = ['nt', null, 'b', null, 'nv', null, 'a', null, 'z'];
console.log( [...arr].sort((x, y) => {
if (x === null) {
return 1;
}
if (y === null) {
return -1;
}
if (x === y) {
return 0;
}
return x < y ? -1 : 1;
}) );
// ['a', 'b', 'nt', 'nv', 'z', null, null, null, null]
console.log( arr );
// ['nt', null, 'b', null, 'nv', null, 'a', null, 'z']
-
前の記事
C# 文字列を指定した区切り文字で分割してリストを作成する 2022.08.10
-
次の記事
MariaDB 整数をカンマ区切りで出力する 2022.08.11
コメントを書く