ホームページ > ウェブフロントエンド > jsチュートリアル > 別の配列の順序に基づいて JavaScript 配列を並べ替えるにはどうすればよいですか?

別の配列の順序に基づいて JavaScript 配列を並べ替えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-19 18:49:10
オリジナル
696 人が閲覧しました

How to Sort a JavaScript Array Based on the Order of Another Array?

別の配列に基づいた JavaScript 配列の並べ替え

JavaScript では、配列の並べ替えは一般的な操作です。ただし、別の配列に基づいて配列を並べ替える必要があるシナリオもあります。これは、要素をリンクするための一意の識別子がない場合、特に困難になる可能性があります。

問題ステートメント:

2 つの配列があると想像してください:

  • itemsArray: ペアの配列[name, groupName]、例:

    [
        ['Anne', 'a'],
        ['Bob', 'b'],
        ['Henry', 'b'],
        ['Andrew', 'd'],
        ['Jason', 'c'],
        ['Thomas', 'b']
    ]
    ログイン後にコピー
  • sortingArr: グループ名のソートされた配列、例:

    ['b', 'c', 'b', 'b', 'a', 'd']
    ログイン後にコピー

タスクは、itemArray の配置と一致するように再配置することです。並べ替えこれは、同じグループに属する項目が隣接し、sortArr の順序で並べ替えられる必要があることを意味します。

解決策:

この問題を解決するには、並べ替え関数を使用できます。 sortArr:

itemsArray.sort(function(a, b){  
  return sortingArr.indexOf(a) - sortingArr.indexOf(b);
});
ログイン後にコピー

のグループのインデックスに基づいて要素を比較します。この関数は、次のインデックス間の差を計算します。 sortArr の要素。正の差は要素 a を要素 b の後に配置する必要があることを示し、負の差はその逆を示します。

1 行の解決策:

または、次のように書くこともできます。矢印構文を使用した並べ替え機能により、より簡潔になります。解決策:

itemsArray.sort((a, b) => sortingArr.indexOf(a) - sortingArr.indexOf(b));
ログイン後にコピー

出力:

ソート後の itemsArray は次のようになります:

[
    ['Bob', 'b'],
    ['Jason', 'c'],
    ['Henry', 'b'],
    ['Thomas', 'b'],
    ['Anne', 'a'],
    ['Andrew', 'd'],
]
ログイン後にコピー

ご覧のとおり、 itemsArray 内の要素は、sortingArr.

の順序と一致するように再配置および並べ替えられています。

以上が別の配列の順序に基づいて JavaScript 配列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート