別の配列に基づいた 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 サイトの他の関連記事を参照してください。