javascript-根据数组中的一个属性或多个属性对数组进行排序
admin
2024-02-09 22:56:48

一、javascript-sort()方法

定义:

sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,可以升序或降序。

默认排序顺序为按字母升序。使用数字排序,必须通过一个函数来指定排序规则且作为参数来调用。

需要注意的是:该方法返回的是排序后的新数组,改变原数组

原理:

浏览器会根据回调函数的返回值来决定元素的顺序,如果返回一个大于0的值,则元素会交换位置,如果返回一个小于0的值,则元素位置不变,如果返回一个0,则认为两个元素相等,不交换位置。

实例:

简单的数组排序:

实例1:字母升序

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

fruits 输出结果:

Apple,Banana,Mango,Orange

实例2:字母降序

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();//数组反转

fruits输出结果:

Orange,Mango,Banana,Apple

实例3: 数字升序

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});

fruits输出结果:

1,5,10,25,40,100

 实例4:数字降序:

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});

fruits输出结果:

100,40,25,10,5,1

 (或在升序排列后使用reverse()方法进行顺序反转)

数组对象排序:

如果是数组对象中的某个属性,只需要指定一个回调函数来作为参数调用,通过该回调函数的返回值来进行数组排序:

实例:将数组中的对象按age属性的大小升序排列

var person=[
{name:"小明",age:19},
{name:"小红",age:18},
{name:"小军",age:21},
{name:"小兰",age:20}]
function compare(property) {return function (obj1, obj2) {var value1 = obj1[property];var value2 = obj2[property];return value1 - value2; // 升序};
}
var newArr=person.sort(compare("age"));

排序后的内容为:

[{name:"小红",age:18},

{name:"小明",age:19},

{name:"小兰",age:20},

{name:"小军",age:21}]

数组对象中的多属性排序:

同样的,该方法不只适用于对数组方法中的单属性进行判断排序,也可对多个属性进行排序,当我们比较的第一个属性差值为0时,再进行第二个属性的比较,并通过返回值进行sort的排序即可。

举一个简单的例子来说明:

var data=[
{year:1999,month:10},
{year:2000,month:6},
{year:2000,month:10},
{year:1999,month:6}]
function compare(property1,property2) {return function (obj1, obj2) {var year1 = obj1[property1];var year2 = obj2[property1];var month1= obj1[property2];var month2= obj2[property2];if(year1-year2==0){return month1 -month2;// 月份升序}else{   return year1 -year2; // 年份升序}};
}
var newData = data.sort(compare("year","month"));

排序后的数组为:

[{"year": 1999, "month": 6},

{"year": 1999,"month": 10},

{"year": 2000,"month": 6},

{"year": 2000,"month": 10}]

二、冒泡排序

原理:通过两层循环,每轮比较相邻的两个元素,如果前一个元素比后一个元素大,则交换位置,使得最大的元素放置在数组末尾,并进行下一轮循环,比较其余元素,以此实现数组的逐步排序。

实例:

var arr = [6,3,4,7,5,2,1];
for (var i = 0; iarr[j+1]){var temp = arr[j];arr[j]=arr[j+1];arr[j+1]=temp; }}
}
console.log(arr); //[1, 2, 3, 4, 5, 6, 7]

相关内容

热门资讯

赤水性价比粮食酒推荐:2025... 赤水性价比粮食酒推荐:2025年酱香酒选购全攻略 一、开篇背景与市场痛点 2025年的赤水河流域酒类...
非白酒板块11月19日跌0.3... 证券之星消息,11月19日非白酒板块较上一交易日下跌0.33%,*ST椰岛领跌。当日上证指数报收于3...
以运河文化赋能产业发展|古贝春... 11月17日至19日,以“新质开新局,聚力创未来”为主题的2025年第六届中国白酒黄淮核心产区高质量...
深夜小酌的灵魂搭档:油炝脆骨,... 油炝脆骨是一道充满锅气与烟火气息的家常菜,以其爽脆的口感和浓郁的香辣风味深受许多人喜爱。这道菜的制作...
初中毕业新征程:为什么西点烘焙... 站在初中毕业的人生路口,许多女孩都在思考:哪条路能通往一个既美好又独立的未来?如果有一条道路,能将女...