首页 > 编程语言 >JavaScript 将对象数组按字母顺序排序

JavaScript 将对象数组按字母顺序排序

时间:2023-07-12 10:32:38浏览次数:54  
标签:sort FirstName tzy LastName JavaScript list 数组 var 排序

原文链接:JavaScript 将对象数组按字母顺序排序

这里给出三种解决方案:

1.if条件语句 + sort()

2.localeCompare() + sort()

3.Collator() + sort()

sort 用法

语法

array.sort(compareFunction)

参数值

参数 描述
compareFunction 可选。定义替代排序顺序的函数。该函数应返回负值、零值或正值,具体取决于参数,例如:<br /> function(a, b){ return a - b } <br />sort() 方法比较两个值时,将值发送给比较函数,根据返的(负、零、正)值对值进行排序。<br /><b>举例:</b><br />比较 40 和 100 时,sort() 方法调用比较函数(40,100)。<br />该函数计算 40-100,并返回 -60(负值)。<br />sort 函数会将 40 排序为小于 100 的值。

sort() 方法会改变原始数组。

兼容性

Chrome、IE、Edge、Firefox、Safari、Opera 等 都支持 sort() 方法。

举例

排序数组

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var tzy = fruits.sort();
console.log(tzy);

输出如下:

按升序排序

var points = [66, 100, 3, 10, 250, 88, 77];
var tzy = points.sort((a, b)=> a - b);
console.log(tzy);

输出如下:

02.jpg

按降序排序

var points = [66, 100, 3, 10, 250, 88, 77];
var tzy = points.sort((a, b)=> b - a);
console.log(tzy);

输出如下:

if 条件语句 + sort()

var list = [
    { FirsName: "Aaron", LastName: "Baker" },
    { FirstName: "Bert", LastName: "Green" },
    { FirstName: "Larry", LastName: "White" },
    { FirstName: "Victor", LastName: "Fox" },
]
function sortArray(x, y) {
    if (x.LastName < y.LastName) { return -1; }
    if (x.LastName > y.LastName) { return 1; }
    return 0;
}
var tzy = list.sort(sortArray);
console.log(tzy);

输出如下:

localeCompare() + sort()

var list = [
    { FirsName: "Aaron", LastName: "Baker" },
    { FirstName: "Bert", LastName: "Green" },
    { FirstName: "Larry", LastName: "White" },
    { FirstName: "Victor", LastName: "Fox" },
]
function sortArray(x, y) {
    return x.LastName.localeCompare(y.LastName)
}
var tzy = list.sort(sortArray);
console.log(tzy);

输出如下:

如果对象目标 key 中存在标点符号,在这种情况下,我们可以使用localeCompare()函数并将其设置为在比较期间忽略标点符号。

var list = [
    { FirsName: "Aaron", LastName: ",Baker" },
    { FirstName: "Bert", LastName: "Green" },
    { FirstName: "Larry", LastName: ",White" },
    { FirstName: "Victor", LastName: "Fox" },
]
function SortArray(x, y){
    return x.LastName.localeCompare(y.LastName, 'fr', {ignorePunctuation: true});
}
var tzy = list.sort(sortArray);
console.log(tzy);

输出如下:

你还可以通过将 localeCompare() 函数的灵敏度设置为 base 来忽略字符串中存在的特殊字符,如下所示。

x.LastName.localeCompare(y.LastName, 'en', { sensitivity: 'base' });

点击 传送门 查看有关 localeCompare() 函数的更多详细信息。

Collator() + sort()

var list = [
    { FirsName: "Aaron", LastName: "Baker" },
    { FirstName: "Bert", LastName: "Green" },
    { FirstName: "Larry", LastName: "White" },
    { FirstName: "Victor", LastName: "Fox" },
]
function SortArray(x, y){
    return collator.compare(x.LastName, y.LastName);
}
var tzy = list.sort(sortArray);
console.log(tzy);

输出如下:

标签:sort,FirstName,tzy,LastName,JavaScript,list,数组,var,排序
From: https://blog.51cto.com/u_13734369/6696657

相关文章

  • Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是
    1.jquerygrep()筛选遍历数组(可以得到反转的数组)//1.jquerygrep()筛选遍历数组(可以得到反转的数组)vararray=[1,5,9,3,12,4,48,98,4,75,2,10,11];varfilterArray=$.grep(array,(currentValue)=>{returncurrentValue>10;});console.log(`${filt......
  • 树状数组
    概念https://zhuanlan.zhihu.com/p/92920381树状数组(BinaryIndexedTree,又FenwickTree)其实并不是一棵树,只是对数组各元素进行逻辑上的划分。根据维基百科,树状数组是一种用于高效计算数列前缀和的数据结构,它可以以O(logn)的时间得到任意前缀和(两个前缀和相减即可得到区间和),并......
  • HJ80 整型数组合并
    1.题目读题HJ80 整型数组合并  考查点 2.解法思路 代码逻辑 具体实现 publicclassHJ080{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn1=sc.nextInt();int[]arr1=newint[n1]......
  • 「学习笔记」后缀数组
    感谢LB学长的博文!前置知识后缀是指从某个位置\(i\)开始到整个串末尾结束的一个特殊子串,也就是\(S[i\dots|S|-1]\)。计数排序-OIWiki(oi-wiki.org)基数排序-OIWiki(oi-wiki.org)变量后缀数组最主要的两个数组是sa和rk。sa表示将所有后缀排序后第\(i\)小......
  • 在Ubuntu下的docker下安装sqlserver并指定排序规则和语言
    最近在公司弄了个小程序,随便架了个sqlserver,再看微软官网的时候发现可以在docker下安装sqlserver,随便实践记录下先上微软的连接地址Docker:为Linux上的SQLServer安装容器-SQLServer|MicrosoftLearn这个是sqlserver2017的,其他版本也是类似的,其实都是微软docker了一个lin......
  • 「模板」树状数组
    引入题目描述给定\(n\)个数\(a[1],a[2],a[3]...a[n]\),现在又下面两种操作:1.询问区间\([x,y]\)的和,并输出。2.将下标为\(x\)的数增加\(val\)。一共\(x\)此操作\(1\len,m\le100000\),保证在\(int\)范围内。方法一:暴力枚举定义数组\(a\)储存\(n\)个元素。求区间和的时间复......
  • VBA自定义排序
    SortField.clear方法清除所有 SortFields 对象。SortFields.Add方法创建新的排序字段,并返回一个SortFields 对象。语法:expression.SortFields.add(key、SortOn、 Order、 CustomOrder、 DataOption)'Key:指定排序字段的范围或单元格。'SortOn:指定排序方式。例如xl......
  • 动态数组和C++ std::vector详解
    目录1.std::vector2.vector的用法    2.1vector的定义和声明    2.2成员函数        2.2.1基本函数            operator=            assign            get_allocator        2.2.2元素访问   ......
  • 520要通过这种方式告白 html+css+javascript canvas桃心代码 可修改 【附完整代码】
    ......
  • 代码随想录算法训练营第二十九天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分
      860.柠檬水找零 思路:遇到20,先给10和5,再给三个5代码:1boollemonadeChange(vector<int>&bills){2if(bills.size()==0)returntrue;34map<int,int>currentMoney;5for(inti=0;i<bills.size();i++)6{7if......