JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでJSONオブジェクトの値を並べ替えて配列として取得する方法

JavaScriptでは、オブジェクトに格納された値を取り出して、昇順(または降順)に並べ替えた配列を作成したい場面がよくあります。本記事では、その具体的な実装方法をわかりやすく解説します。

前提となるオブジェクト

まず、次のようなオブジェクトを想定します。

const obj = {
    key1: 56,
    key2: 67,
    key3: 23,
    key4: 11,
    key5: 88
};

このオブジェクトを受け取り、各プロパティの値を昇順に並べ替えた次のような配列を返す関数を作成するのが目的です。

const arr = [11, 23, 56, 67, 88];

つまり、「オブジェクトの値だけを取り出し、それらを配列内でソートする」という処理を行います。

実装コード

以下が実際のコードです。

const obj = {
    key1: 56,
    key2: 67,
    key3: 23,
    key4: 11,
    key5: 88
};
const sortObject = obj => {
    const arr = Object.keys(obj).map(el => {
        return obj[el];
    });
    arr.sort((a, b) => {
        return a - b;
    });
    return arr;
};
console.log(sortObject(obj));

実行結果

コンソールには次のように出力されます。

[ 11, 23, 56, 67, 88 ]

コードの解説

この処理の流れは以下のとおりです。

1. 値の配列化: Object.keys(obj) でオブジェクトのすべてのキー(key1key5)を配列として取得し、map() を使って各キーに対応する値へと変換しています。これにより、[56, 67, 23, 11, 88] という値のみの配列が得られます。

2. 数値としてのソート: sort() の引数に比較関数 (a, b) => a - b を渡しています。これは重要なポイントです。JavaScriptの sort() はデフォルトでは要素を文字列として比較するため、数値を正しく昇順ソートするには必ずこのような比較関数が必要になります。降順にしたい場合は (a, b) => b - a とすればOKです。

より簡潔な書き方:Object.values() を使う

ES2017以降では Object.values() メソッドを使えば、キーの取得と値への変換を1ステップで行えます。

const sortObject = obj => {
    return Object.values(obj).sort((a, b) => a - b);
};
console.log(sortObject(obj)); // [ 11, 23, 56, 67, 88 ]

こちらの方がコードが短く、意図も明確になるため、モダンな環境では推奨される書き方です。

  1. JavaScriptでJSONデータからHTMLを動的に生成する方法

    はじめにWeb開発において、APIから取得したJSONデータをHTMLとして画面に表示する処理は非常によく使われるテクニックです。本記事では、JavaScriptのfetchメソッドを使ってJSONデータを取得し、そのデータをもとにHTMLのテーブルを動的に生成する方法を解説します。補足: 本記事のサンプルコードでは「JSONPlaceholder」というサービスを利用しています。JSONPlaceholderは、テストやプロトタイプ開発のために用意された無料のダミー(フェイク)REST APIであり、実際のサーバーを構築しなくても手軽にJSONデータの取得を試すことができます。サンプルコード

  2. JSONテキストをJavaScriptのJSONオブジェクトに変換する方法を解説

    JavaScriptでは、JSON.parse()メソッドを使用することで、JSON形式のテキスト文字列をJavaScriptオブジェクトへと変換できます。このメソッドは、APIから取得したデータやサーバーとの通信で受け取ったJSON文字列を、プログラム内で扱いやすいオブジェクトにパースする際に非常に重要な役割を果たします。 以下は、JSONテキストをJavaScriptオブジェクトに変換する具体的なコード例です。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /&