【javascript】連想配列を昇順または降順に並び変えるsort() compareFunction()
やりたいこと
以下の連想配列を名前または年齢をもとに昇順/降順に並び変えたいと思います。
const array = [
{
name: "tanaka",
age: 26,
},
{
name: "sato",
age: 36,
},
{
name: "suzuki",
age: 31,
},
{
name: "yamada",
age: 48,
},
{
name: "akita",
age: 24,
},
];
Name | Age |
---|
連想配列(オブジェクト)を昇順にする関数
以下の関数を作ります。kyeはオブジェクトのkyeを入力します。 先ほどの連想配列なら、nameのage 2つがあり、名前を基準に昇順にしたい場合は、a.name, b.name、 年齢を基準に昇順にしたい場合は、a.age, b.age に書き換えます。
function compareKyeAsc(a, b) {
if (a.kye > b.kye) {
return 1;
}
if (a.kye < b.kye) {
return -1;
}
return 0;
}
連想配列(オブジェクト)を降順にする関数
先ほどの関数の+(正)と-(負) を入れ替えるだけです。
function compareKyeDesc(a, b) {
if (a.kye > b.kye) {
return -1;
}
if (a.kye < b.kye) {
return 1;
}
return 0;
}
連想配列を昇順/降順に並び変える
Array.from()で、元の配列を書き換えないようにします。
sort()の引数に、先ほどつくった関数を指定します。
例)sort.(compareNameAsc)
// 名前を基準に昇順
const arrAscName = Array.from(array).sort(compareNameAsc);
function compareNameAsc(a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
return 0;
}
// 名前を基準に降順
const arrDescName = Array.from(array).sort(compareNameDesc);
function compareNameDesc(a, b) {
if (a.name > b.name) {
return -1;
}
if (a.name < b.name) {
return 1;
}
return 0;
}
// 年齢を基準に昇順
const arrAscAge = Array.from(array).sort(compareAgeAsc);
function compareAgeAsc(a, b) {
if (a.age > b.age) {
return 1;
}
if (a.age < b.age) {
return -1;
}
return 0;
}
// 年齢を基準に降順
const arrDescAge = Array.from(array).sort(compareAgeDesc);
function compareAgeDesc(a, b) {
if (a.age > b.age) {
return -1;
}
if (a.age < b.age) {
return 1;
}
return 0;
}
参考
こんな記事も読まれています。
-
【HTML】【CSS】【javascript】電卓の作り方
電卓のソースコードを2つ紹介します。javascriptはわずか数行で書けます。
-
【JacvaScript】【CSS】たった4行のJavaScriptでできるハンバーガーメニューの作り方
たった4行のJavaScriptで作るハンバーガーメニューの作り方について紹介します。✖をつくるには、transform-originがポイントです。
- リンク
-
波紋エフェクトを表現するjqueryのripples-min.jsの使い方
jqueryのripples-min.jsを使うと簡単に水面の波紋を表現できます。波紋の広がりの速度、波紋の大きさ、波紋のブレの値を変えていろいろ表現させると面白いです。
-
【Javascript】querySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法。
JavascriptのquerySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法について解説します。querySelectorと同じように書いてしまうとエラーがでます。forEachを使うとすべてに適用できます。
- リンク
-
要素の高さを取得する方法。getBoundingClientRectとは?window.innerHeightとは?window.pageYOffsetとは?
要素の高さを取得する方法について解説します。getBoundingClientRect、window.innerHeight、window.pageYOffsetについて理解し、要素がいつ画面に現れるかを把握できるようにしましょう。
-
Javascriptを使ったページネーションの実装
トップページの記事が増えてきたので、何とかページネーションで最新の記事だけを表示できないかと思っていたら、いい記事を発見しました。カスタマイズして実装することができました。
- リンク
-
【Javascript】マウスの指す(X, Y)座標とドラッグ & ドロップを理解する
マウスの指す(X, Y)座標とドラッグ & ドロップについて解説します。mousedown, mouseover, mousemove, mouseupを使います。
-
【javascript】連想配列をテーブルできれいに表示する方法
javascript(Object.entries)を使って、連想配列の中身をテーブルできれいに表示する方法について紹介します。
- リンク