「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript で安定した並べ替えを実行して要素の順序の一貫性を維持するにはどうすればよいですか?

JavaScript で安定した並べ替えを実行して要素の順序の一貫性を維持するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:743

How to Perform Stable Sorting in JavaScript to Maintain Element Order Consistency?

JavaScript の安定した並べ替えアルゴリズム

データを並べ替えるとき、等しい要素の元の順序を維持することは、安定した並べ替えアルゴリズムにとって重要です。このコンテキストでは、要素の順序の一貫性を維持しながら、特定のキーを持つオブジェクトの配列を特定の順序でソートすることを目的としています。

安定したソート手法

興味深いことに、非安定ソート機能を使用すると、安定したソートを実現できます。並べ替え前に各要素の初期位置を取得することで、位置を 2 番目の基準として使用して並べ替え比較の関係を解消できます。

JavaScript での実装

const sortBy = (arr, key, order) => {
  // Capture element positions
  const positions = arr.map((item, i) => {
    return { item, position: i };
  });

  // Perform sorting
  positions.sort((a, b) => {
    let cmp = a.item[key].localeCompare(b.item[key]);
    if (cmp === 0) {
      // Tiebreaker: sort by position
      cmp = a.position - b.position;
    }
    if (order === "desc") {
      return cmp * -1;
    } else {
      return cmp;
    }
  });

  // Return sorted objects
  return positions.map(position => position.item);
};

使用例

const data = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Eve", age: 25 },
];

const sortedAscending = sortBy(data, "age", "asc");
console.log(sortedAscending); // [{ name: "Alice", age: 25 }, { name: "Eve", age: 25 }, { name: "Bob", age: 30 }]

const sortedDescending = sortBy(data, "age", "desc");
console.log(sortedDescending); // [{ name: "Bob", age: 30 }, { name: "Eve", age: 25 }, { name: "Alice", age: 25 }]

この手法により安定したソートが可能になりますJavaScript では、等しい値を持つ要素の元の順序が維持されます。

リリースステートメント この記事は次の場所に転載されています: 1729255218 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3