js 字符串比较大小小白攻略_字符串使用攻略

之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8。所以我给的方法是 直接比较,如:文本运行var a = “2014-08-08”;
var b = “2014-09-09”;
console.log(a>b, a<b); // false true很方便不是么,但是原理是什么呢?打开 ECMA 第 11.8

js 字符串比较大小小白攻略

之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8。所以我给的方法是 直接比较,如:

js 字符串比较大小小白攻略_字符串使用攻略

文本运行

var a = "2014-08-08";
var b = "2014-09-09";
console.log(a>b, a<b); // false true

很方便不是么,但是原理是什么呢?

打开 ECMA 第 11.8.5 节 The Abstract Relational Comparison Algorithm,在 4. Else, both px and py are Strings 处可以看到字符串比较的情况。或者翻开 V8 简单看下,在 COMPARE 处。

文本

if (IS_STRING(this)) {
    if (IS_STRING(x)) return %_StringCompare(this, x);
    if (IS_UNDEFINED(x)) return ncr;
    left = this;
}

可以看到调用了 %_StringCompare,然后打开这个函数C++源码,(反正我是看不懂,就简单看看而已),可以看到他一开始不知道比较什么东西,如果成立就相等,那函数我找到源码也没看懂什么意思,水平太水了,没办法。
直接如果字符串长度是0的情况,就可以直接比较出大小。最后才是关键,按每个字符的 charCode 大小进行比较,直到分出大小为止。

举个例子  a=””, b=””;  那么执行  a > b  因为长度都是 0 ,所以在长度比较的时候就得到结果了。如果  a=”a11″, b=”a2″;  那么  a>b 会得到什么结果呢?

文本运行

var a="a11", b="a2";
console.log(a>b, a<b);

如果有字符进行比较就不是比长度了,而是按字符逐个进行比较,知道分出大小为止。
 a>b  比较,步骤是这样的:

差不多就重复这样的步骤进行对比,直到分出大小或者全部对比结束为止。而不简单的比较字符串长度。一句话概括就是按照字典序进行对比。所以刚才的问题,如果日期格式合适的情况下,直接比较是最方便的啦。

文本运行

console.log('选择'>'努力'); // true

因为 “选” 的 charCode 是 36873,”努” 的 charCode 是 21162。

两个字符串比较大小,比较的是组成它们字符的ASCII码的大小,比较原则如下:

海计划公众号
(0)
上一篇 2020/03/29 01:43
下一篇 2020/03/29 01:43

您可能感兴趣的内容

  • 敏捷开发是如何被跑偏的基础入门_开发小白攻略

    今天聊聊敏捷软件过程。先说结论:据我观察,至少有60%的团队误用了敏捷软件过程,或者说至少60%的团队在进行伪敏捷开发。与大家通常的认知是相反的,敏捷过程并不是一个非常容易实践或者实施的过程规范。通常来讲,没有天上掉馅饼的事儿,所以使用敏捷软件过程带来灵活性收益的同时,一定是要付出相应的代价的。例如:如果需要实行结对编程,那么在选择团队成员的时候就需要考虑人

    2020/03/30
  • web前端学习之路零基础入门_入门基础

    “对于程序员来说,如果哪一天开始他停止了学习,那么他的职业生涯便开始宣告消亡。”这不是什么危言耸听的怪语,而是一位大牛几年前告诉我的,他的信条。四五年过去了,我也从当年的小菜鸡摸爬滚打成了老油条,一直保持着学习的习惯,大牛的这句话一直在我脑海中萦绕,挥之不去。在我五年的职业生涯中,除了新年和黄金周,每天都要学习编程三个小时以保证充分提升自己。一方面是因为对前

    2020/03/29
  • 过滤器vue.filters的使用小白知识_过滤器基础入门

    写项目的时候,有一些方法我们是需要全局使用的,比如数字的四色五入保留小数点啊、一些工具方法、字符的格式化啊等等。这些很多页面需要用的、使用频率极高的方法,我们一般会将其封装为全局的方法;我以前是这样做的,有这么几种方式:1、挂载到vue.prototype在main.js入口文件中挂载到vue.prototype,如我们封装一个获取时间戳的函数。Vue.pr

    2020/03/23
  • 23 个 Vue.js 初级面试题菜鸟教程_面试基础教程

    1. 为什么Vue被称为“渐进框架”?使用渐进式框架的代价很小,从而使现有项目(使用其他技术构建的项目)更容易采用并迁移到新框架。 Vue.js 是一个渐进式框架,因为你可以逐步将其引入现有应用,而不必从头开始重写整个程序。Vue 的最基本和核心的部分涉及“视图”层,因此可以通过逐步将 Vue 引入程序并替换“视图”实现来开始你的旅程。由于其不断发展的性质,

    2020/03/22
  • happypack提升项目构建速度小白知识_node指南攻略

    前言最近在看《深入浅出webpack》看到了happypack。就想起公司一vue项目,每次项目启动都将近2分钟。等的实在让人不耐烦,都够我支付宝偷一波能量了。就自己实践了下,事实证明是有效的。原平均构建速度为1分55秒(5次),使用happypack后平均构建速度为1分45秒(5次)。我只修改了对.vue文件的处理,如下实战代码,节省了10秒还是不错滴。h

    2020/04/03
  • vuex的持久化小白基础_vuex基础入门

    vuex的持久化小白基础 vuex Vuex是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应 用的所有组件的状态,并以相应的规则保证…

    2020/03/19
  • vue 过渡攻略教程_过渡使用攻略

    添加过渡效果的方法:在 CSS 过渡和动画中自动应用 class可以配合使用第三方 CSS 动画库,如 Animate.css在过渡钩子函数中使用 JavaScript 直接操作 DOM可以配合使用第三方 JavaScript 动画库,如 Velocity.js1、单组件或子元素过渡,使用:<transition name="fade

    2020/03/22
  • 物联网项目选择JavaScript的5大理由菜鸟教程下载_项目攻略教程

    物联网项目选择JavaScript的5大理由菜鸟教程下载 在一个以数字化为主导的世界中,物联网(IoT)在改变我们的生活和开展业务方式方面发挥着至关重要的作用。从智能生活到工作场所…

    2020/03/19
  • 学习web前端?如何找工作?小白指南_前端使用攻略

    解释一下web前端工作是做啥的,Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/Flash等各种Web技术进行客户端产品的开发。完成客户端程序(也就是浏览器端)的开发,开发JavaScript以及Flash模块,同时结合后台开发技术模拟整体效果,进行丰富互联网的Web开发,致力于通过技术改善用户体验。个人背景:首先我的前端是

    2020/03/29
  • ColorReview指南教程_在线前景和背景颜色对比

    ColorReview指南教程 官方网址:https://color.review/ 简介描述:在线前景和背景颜色对比 ColorReview是一款可以针对设计师颜色设计的预览工具…

    2020/03/10
  • FileAPI入门基础_提供了文件上传处理的js工具

    FileAPI入门基础 GitHub:https://github.com/mailru/FileAPI 简介描述:提供了文件上传处理的js工具 FileAPI是一组庞大的Java…

    2020/03/06
  • 十大编程语言榜单小白常识_编程入门百科

    十大编程语言榜单小白常识 如果你是软件开发领域的新手,那么你会想到的第一个问题是“如何开始?”编程语言有数百种可供选择,但是你怎么发现哪个最适合你,你的兴趣和职业目标又在哪里呢?选…

    2020/03/19
  • 静态和动态网页的区别?使用说明_网页基础入门

    一、静态web页面在静态web程序中,客户端使用web浏览器经过网络连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务区我现在需要得到哪个页面,所有的请求交给web服务器,之后web服务器根据用户的需求,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效

    2020/03/26
  • popper.js基础教程一个扩展性较好的 tooltips 提示类 JS 插件

    popper.js指南教程 官方网址:https://popper.js.org GitHub:https://github.com/FezVrasta/popper.js 简介描…

    2020/03/06
  • js实现上拉加载,下拉刷新基础入门_刷新菜鸟知识

    背景使用过很多下拉刷新,上拉加载的插件,虽然也知道一点原理,但似乎一直不太完全能理解它,闲来无事,手写一个,感受下,借鉴了better-scroll的源码,功能当然相差甚远,也只是个简易版的实现,大概就这意思。

    <meta name="vi

    2020/03/23
  • 晚上寂寞了怎么办?新手入门_福利使用帮助

    相信到了晚上有许多人会感觉到寂寞。没有人陪着说话,安静的空气、安静的氛围仿佛笼罩着整个我们的房间。这时候我们该怎么办呢?当我们认识寂寞后,那么就需要真正的接受它了,我们要学会接受自己一个人的状态,我们了解这只是生活的一种常态,每个人都会遇到,每个人都会经历的,没什么大不了,所有人都是一样的,我可以接受,每个人都要学着自己长大。 这时候我们可以试着做一些让自己

    2020/03/23