JavaScript 中的稳定排序算法
对数据进行排序时,保留相等元素的原始顺序对于稳定的排序算法至关重要。在这种情况下,我们的目标是按照给定的顺序对具有特定键的对象数组进行排序,同时保持元素顺序的一致性。
稳定的排序技术
有趣的是,甚至非稳定排序函数可以实现稳定排序。通过在排序前捕获每个元素的初始位置,我们可以使用位置作为次要标准来打破排序比较中的平局。
JavaScript 中的实现
<code class="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); };</code>
用法示例
<code class="javascript">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 }]</code>
此技术允许在 JavaScript 中进行稳定排序,保留具有相等值的元素的原始顺序。
以上是如何在 JavaScript 中进行稳定排序以保持元素顺序一致性?的详细内容。更多信息请关注PHP中文网其他相关文章!