热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScriptArray.sort()在Firefox中不起作用

假设我有一个要排序的数组,某个元素将排在第一位,其余部分保持原样。例如[1,2,3,4]并且我希望2位于数组的开头[1,2,3,4].sor

假设我有一个要排序的数组,某个元素将排在第一位,其余部分保持原样。

例如 [1,2,3,4] 并且我希望 2 位于数组的开头

[1,2,3,4].sort((a,b)=> a == 2 ? -1 : 0)

在 chrome 中,输出符合预期

// chrome
[2,1,3,4]

但在 Firefox 中,输出不同,第 2 个不是第一个

// firefox
[1,2,3,4]

回答

您还需要处理的案件均b2正确的:

.sort((a, b) => (b === 2) - (a === 2))

但在 Firefox 中,数组未排序

不完全是,Firefox 可能会使用不同的排序算法,以便以不同的顺序使用不同的参数调用排序器。如果以下条件始终为真,则数组仅在所有不同的实现中正确排序:

sorter(a, a) === 0
sorter(a, b) === - sorter(b, a)


请注意,排序通常是 O(n log n) 平均情况(尽管如果很多元素相等可能会更好),而问题可以在 O(n) 中解决:

const withoutTwo = array.filter(it => it !== 2);
const result =
Array.from({ length: array.length - withoutTwo.length }).fill(2)
.concat(withoutTwo);






推荐阅读
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 在项目开发过程中,对数组进行过滤处理时,Java 8 提供了两种相似但有所区别的方法:`filter` 和 `removeIf`。其中,`filter` 主要应用于流式操作,通过返回一个新的流对象来实现数据的过滤,而 `removeIf` 则直接修改原集合,移除符合条件的元素。本文将详细探讨这两种方法的差异及其适用场景,帮助开发者在实际应用中做出更合适的选择。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文探讨了如何利用Java 8 Stream API 对数组进行高效排序和筛选处理。具体而言,通过 `stream()` 方法将 `listResult` 转换为流,然后使用 `sorted(Comparator.comparing())` 方法按伴随度进行降序排序,并最终收集结果。此外,还介绍了如何结合过滤条件进一步优化数据处理流程,提升代码的可读性和执行效率。 ... [详细]
author-avatar
大印文化
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有