今天遇到了一个没有接触过的方法,是localeCompare()。查了一些相关的文档,给出的定义很模糊,所以就把自己的理解写下来。

  首先由例子入手!

  已知一串学生姓名的字符串,根据学生姓名的长度按照降序排序,并返回名称列表。等长度的名称将以相反的字母顺序(Z-> A)返回。

  给出字符串 string = "xxa xxb xxc xxd xa xb xc xd";

  返回 ['xxd', 'xxc', 'xxb', 'xxa', 'xd', 'xc', 'xb', 'xa'];

接下来就是正解代码!

 function lineupStudents(students){
var stu=students.split(" ");
stu.sort(function(a,b){
if(a.length==b.length){
return b.localeCompare(a);
}else{
return b.length-a.length;
}
});
console.log(stu);
}
var s1 = 'Tadashi Takahiro Takao Takashi Takayuki Takehiko Takeo Takeshi Takeshi';
lineupStudents(s1);//输出['Takehiko','Takayuki','Takahiro','Takeshi','Takeshi','Takashi','Tadashi','Takeo','Takao']

  这个例子中还是利用array对象的排序方法,在排序参数提供的函数中再来进行本地的排序。

  接下来看看Sort() 官方说法:

arrayobj.sort(sortfunction)

  参数

arrayObj

必选项。任意 Array 对象。

sortFunction

可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

  说明

sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

  • 负值,如果所传递的第一个参数比第二个参数小。
  • 零,如果两个参数相等。
  • 正值,如果第一个参数比第二个参数大。

再来看看localeCompare()是怎么说的!

  定义和用法

用本地特定的顺序来比较两个字符串。

  语法

stringObject.localeCompare(target)

参数

描述

target

要以本地特定的顺序与 stringObject 进行比较的字符串。

返回值

说明比较结果的数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。

综上两个方法的说明,在sortfunction参数存在的情况下都会有数字结果返回值。而在例子中最关键的步骤就是b.localeCompare(a),按着特定的顺序比较两个字符串;

另外再补充一点,stringObj.localeCompare(target)中谁比较谁,决定了列表的升序还是降序。例如:

 if(a.length==b.length){
return a.localeCompare(b);
}else{
return a.length-b.length;
}

结果显示就是升序排列!

针对于localeCompare()(比较两个字符串,考虑了默认的本地排序规则),使用的本地规则有汉字和英语的,例子中用的是英语,则是根据字母排序的。如果有用到汉字则是根据汉字拼音来排序。

JavaScript字符串排序localeCompare()笔记的更多相关文章

  1. Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例

    1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...

  2. JavaScript高级程序设计---学习笔记(一)

    今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...

  3. Javascript字符串

    ## 定义 ``` var str = new String("abcdefg"); var str = "abcdefg"; ``` ## 常用方法 ### ...

  4. javascript高级程序设计阅读笔记(一)

    javascript高级程序设计阅读笔记(一) 工作之余开发些web应用作为兴趣,在交互方面需要掌握javascript和css.HTML5等技术,因此读书笔记是必要的. javascript简介 J ...

  5. JavaScript 字符串用于存储和处理文本

    JavaScript 字符串用于存储和处理文本 var string_value='dasfsdfsd'; 注意:字符串利用索引精确定位取值 var character=string_value[7] ...

  6. C 语言实例 - 字符串排序

    C 语言实例 - 字符串排序 C 语言实例 C 语言实例 按字典顺序排序. 实例 #include<stdio.h> #include <string.h> int main( ...

  7. JavaScript对象(复习笔记)

    js对象 对象构造器 function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname ...

  8. JavaScript基础教程复习笔记

    document.write("<h1>这是一个标题</h1>"); 您只能在 HTML 输出中使用 document.write.如果您在文档加载后使用该 ...

  9. js字符串排序方法

    前端开发过程中有时需自己手写排序方法 一般想到数字的字符串排序方法 我们会用到 var newArr = arr. sort(function(a,b){return a - b})来进行排序 但除此 ...

随机推荐

  1. dos下对mysql的简单操作(linux类似)

    >>>>>>>>>>>>>>>>>>>> 基础入门语句10条 1. 连接服务器  ...

  2. python 爬虫(二)

    python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...

  3. BestCoder#51

    #include <cstdio> #include <iostream> #include <cmath> #include <cstring> us ...

  4. jquery+bootstrap实现tab切换, 每次切换时都请求数据, 点击提交分别向不同的地址提交数据

    今天一个朋友叫帮做一个tab切换, 每一个tab内容区域都是从后台取出的数据, 这些数据要用表格的形式显示处理, 并且表格的内容区域可以修改, 如下所示: 例子查看请演示查看. 截图如图所示: 实现步 ...

  5. css border属性做小三角标

    <!doctype html><html> <head> <title></title> <meta charset="ut ...

  6. Codeforces Round #361 (Div. 2) B

    B - Mike and Shortcuts Description Recently, Mike was very busy with studying for exams and contests ...

  7. 【Beta】Daily Scrum Meeting第六次

    1.任务进度 学号 已完成 接下去要做 502 无 发布任务到服务器 509 给所有api添加注释 将各个api改为面向对象 517 无 删除任务的控件及逻辑 530 下拉刷新控件 添加及修改职工信息 ...

  8. C++ 小知识积累

    (1)setw和setfill函数 #include<iomanip> 代码: #include<iostream> #include<iomanip> using ...

  9. input jquery 操作

    本文章主要为了总结开发常用的input等常见html的jquery操作,不是为了展示自己多么菜,只为了积累知识,勿喷!!!不断更新中 $(function () { $("input[nam ...

  10. nlp

    http://blog.sina.com.cn/s/blog_574a437f01019poo.html