JavaScript中如何如何给数组以及数组对象根据value值进行排序。

今天是我在博客园发的第一篇文章。给自己一点巩固。随便分享一波知识。

 

原因起始是,做一个项目的时候,我需要根据给对象去进行排序,来确定它是什么。但是又不会。

 

首先我们先讲,在我们有10个不一样大小的数字类型的值的话,我们如何去给数组进行排序。sort()方法是,是最强大的数组方法之一。

 

直接上干货。

 

//定义水果数组。
var arr=['orange','apple','banana','litchi'];
console.log(arr.sort());
//(4) ["apple", "banana", "litchi", "orange"]


如果我们不给sort方法传递参数的话,它就会按照字母顺序排列。



那么如果我们定义一个数组呢?让它去排序。数组里面的value都是字符串。




//定义数组。’‘都是字符串形式的
var arr=['1','2','4','3'];
console.log(arr.sort());


打印出来的结果。

 

那么我们定义一个数组,既有字符串,但是他是数字,又有数字类型的值呢?

var arr=[1,'2',7,'3'];
console.log(arr.sort());



打印出来的结果。

 

还是完成了排序。那么我们来确定一下,我们放到数组的0号位是什么数据类型的。

 


//定义数组。’‘都是字符串形式的
var arr=[1,'2',7,'3'];
console.log(arr.sort());
console.log(typeof arr[0],typeof arr[1]);
打印出来的是数字类型与字符串。

 

那么我们可以这样理解,sort方法,不管我们放入进去的是字符串数字类型的,还是以所谓的数字类型的都不重要,它自己有自己的一套规则。‘1’字符串的1,和数字1,sort方法会转化成一个类型的数据去比较。然后在转换回来。

 

那么,我们知道了,sort方法默认的规则是,数字类型,从小到大排序,字符串的话,就是。a-z排序。

 

那么,我们混合放入进数组会发生什么呢?

 

var arr=['d','2',4,'1','a'];
console.log(arr.sort());

还是使用sort方法排序。

拿到的结果。

 

这样以来,我们至少可以得出一个依据,数字排序的优先级,比字符串排序的a-z排序的优先级高。否则,你怎么解释,sort‘方法先排的是数字来类型的值呢?
第二个依据就是,只要是字母都会按照,a,b,c排序。数字也会默认从大到小。不管这个数组,是否混合了多种数据。



那么我们接着往下走。


如何给数组进行从大到小排序,这个时候,我们就会用到reverse()方法,反转数组。


var arr=[1,2,3,4,5,6,7];
console.log(arr.reverse());

数组真的就从大到小进行排序了。


但是我们要切记,我们如果单独使用。reverse的话,那么就是把数组倒着排一边,但是这个数组,如果没有使用sort排序的话,就会出现。它只是把数组给颠倒了一下。

 

比值函数排序。

 

 

var arr = [1, 11, 32, 455, 61, 99, 31, 32, 129, 98, 51];

function compare(a, b) {
return b - a;
};
arr.sort(compare);
console.log(arr);

 

也是一种排序方法。

 

以及对象排序。

 

 

 

//定义数组对象
var arr = [
{
name: '三姓家奴',
age: 12,
}, {
name: '宋恒',
age: 10,
}, {
name: '霍亚豪',
age: 17,
}, {
name: '相博',
age: 20,
},
];//传入ab参数
function object(a,b) {
return b.age-a.age;
}
arr.sort(object);
console.log(arr);
咱们console一下,看看会打印什么奇怪的东西,

 

果然是按照对象的age属性进行排序了。

 
 

这大概是sort方法的一部分使用,第一次写博客园,有不对的地方还请指正。菜鸡在此谢过了。


 
 

转载于:https://www.cnblogs.com/zyxn/p/11088874.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值