导航:首页 > 编程语言 > js数组对象排序sort

js数组对象排序sort

发布时间:2022-09-23 14:31:47

js使用Array.prototype.sort()对数组对象排序的方法

本文实例讲述了js使用Array.prototype.sort()对数组对象排序的方法。分享给大家供大家参考。具体分析如下:
在讲对数组对象进行排序时,我们先来简单的了解一下Array.prototype.sort()。sort方法接受一个参数——Function,function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode
code进行比较,如果是Number类型则比较值的大小。如果比较的函数中返回1则两个元素交换位置,0和-1不交换位置。先看一个例子:
复制代码
代码如下:var
arr
=
[3,
5,
2,
1];
//
从小到大排序
arr.sort(function
(a,
b)
{

return
a
>
b
?
1
:
-1;
});
//
得到的结果:[1,
2,
3,
5]
那么回到我们的主题,如果是对一个数组对象进行排序,该怎么写呢?其实原理和上面一样,如:
复制代码
代码如下:var
arr
=
[

{
a
:
2,
b
:
3.2},

{
a
:
3,
b
:
1.2},

{
a
:
4,
b
:
2.2},

{
a
:
6,
b
:
1.2},

{
a
:
5,
b
:
3.2}
]
///
从小到大按属性b排序
arr.sort(function(x,
y){

return
x.b
>
y.b
?
1:-1;
});
x和y就是arr的一个元素,即一个对象,所以直接比较两个对象的属性即可。
上面的例子中,最小的元素中有重复,如果需求是:先按b属性从小到大排序,如果最小中有重复则再按a属性排序,那应该怎么写呢?
在排序的时候,先按b属性排序,如果x.b的大于y.b则将x移到y的右边,如果x.b等于y.b则再通过x.a和y.a进行比较,所以代码如下:
复制代码
代码如下:arr.sort(function
(x,
y)
{

if
(x.b
>
y.b)
{

return
1;

}
else
if
(x.b
===
y.b)
{

return
x.a
>
y.a
?
1
:
-1;

}
else
if
(x.b
<
y.b)
{

return
-1;

}
})
希望本文所述对大家的javascript程序设计有所帮助。

❷ JavaScript对象数组如何按指定属性和排序方

function sortNumber(a,b)
{
return a.number - b.number;//按印数来排名源
}
function element(name,number){//name为书名,number是什么印数
this.name=name;
this.number=number;
this.toString=function(){//关键要重写toString,返回书名
return this.name;
}
}
var arr = new Array(3)
arr[0] = new element("x",2000)
arr[1] = new element("y",1000)
arr[2] = new element("z",3000)
document.write(arr.sort(sortNumber))

❸ js数组的sort方法到底怎么使用呢

哥儿子数据so的方法到底有很多的使用方式 而且这些东西非常的有道理

❹ JS中数组重排序方法

1.数组中已存在两个可直接用来重排序的方法:reverse()和sort()。
reverse()和sort()方法的返回值是经过排序后的数组。reverse()方法会反转数组项的顺序:
var
values=[1,2,3,4,5];
values.reverse();
alert(values);
//5,4,3,2,1
在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串:
var
values
=
[0,1,5,10,15];
values.sort();
alert(values);
//0,1,10,15,5
因此,sort()方法可以接收一个比较函数作为参数。
function
compare(value1,value2){
if
(value1
<
value2){
return
-1;
}else
if
(value1
>
value2){
return
1;
}else{
return
0;
}
}
此比较函数可适用于大多数数据类型,只要将其作为参数传递给sort()方法即可:
var
values
=
[0,1,3,7,9,15];
values.sort(compare);
alert(values);
//0,1,3,7,9,15
也可通过比较函数产生降序排序,只需交换函数返回值即可:
function
compare
(value1,
value2){
if
(value1<value2){
return
1;
}else
if
{
return
-1;
}else{
return
0;
}
}
sort()函数的排序条件是:
参数大于0,arr的相邻两个元素交换位置;
参数小于0,arr的相邻两个元素不交换位置;
参数等于0,arr的相邻两个元素大小相等;所以compare自定义函数必须返回一个数值。
2.对于数值类型或者valueOf()方法会返回数值类型的对象类型。
可使用一个更简单的比较函数。此函数只要第二个值减第一个值即可。
function
compare
(value1,value2){
return
value2
-
value1;
}
以上所述是小编给大家介绍的JS中数组重排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

❺ js数组里有对象,怎么把对象进行排序呢

varaa=[
{"time":Date.parse("2017/02/2216:30"),"val":22},
{"time":Date.parse("2017/02/2116:30"),"val":11},
{"time":Date.parse("2017/02/2316:30"),"val":33},
{"time":Date.parse("2017/02/2416:30"),"val":44}
];
aa.sort(function(a,b){
returna.time>b.time
});
console.log(aa)

❻ Js中的数组sort()排序问题

比较函数的参数 v1 和 v2 代表数组里的两个元素

如果 v1 小于 v2,排序后的数组 v1 在 v2 前面,此时返回一个内负数 (即上面的 return -1)容

如果 v1 等于 v2,排序后两者位置不变,此时返回 0(即上面的 return 0)

如果 v1 大于 v2,排序后 v1 在v2 后面, 返回一个正数(即上面的 return 1)

//比较函数一般简写成:

arr.sort(function(a,b){
returna-b//升序
});

arr.sort(function(a,b){
returnb-a//降序
});

//对应上面的解释好好想下,不难理解为什么这样写

❼ JavaScript数字数组怎么按数字大小排序

  1. 先写上我们的示例代码,定义了一个数组arr,数组包括有几个字母,不按顺序的,要对数组进行排序,直接调用sort方法。再加上一些输出语句,console.log是指在浏览器的调试控制台里输出内容。

  2. 运行页面,我们在控制台里看下结果,如图,数组调用sort方法后,就按字母的升序做好排序了。

  3. 修改下代码,把数组内容从字符串改成数字,然后再调用sort方法。

  4. 修改后,运行页面,再看下结果。

  5. 数组排序都是按字符串来排序的,而不管数组内容是数字还是字符串。

  6. 修改下sort排序方法,把刚才定义的方法名传进来。

  7. 运行页面,可以看到现在的数组就是按数字从小到大排序的。

❽ JS实现数组排序的方法有哪些

从给定的数据中,随机抽出一项,这项的左边放所有比它小的,右边放比它大的,然后再分别这两边执行上述操作,采用的是递归的思想,总结出来就是实现一层,分别给两边递归,设置好出口

functionfastSort(array,head,tail){
//考虑到给每个分区操作的时候都是在原有的数组中进行操作的,所以这里head,tail来确定分片的位置
/*生成随机项*/
varrandomnum=Math.floor(ranDom(head,tail));
varrandom=array[randomnum];
/*将小于random的项放置在其左边策略就是通过一个临时的数组来储存分好区的结果,再到原数组中替换*/
vararrayTemp=[];
varunshiftHead=0;
for(vari=head;i<=tail;i++){
if(array[i]<random){
arrayTemp.unshift(array[i]);
unshiftHead++;
}elseif(array[i]>random){
arrayTemp.push(array[i]);
}
/*当它等于的时候放哪,这里我想选择放到队列的前面,也就是从unshift后的第一个位置放置*/
if(array[i]===random){
arrayTemp.splice(unshiftHead,0,array[i]);
}
}
/*将对应项覆盖原来的记录*/
for(varj=head,u=0;j<=tail;j++,u++){
array.splice(j,1,arrayTemp[u]);
}
/*寻找中间项所在的index*/
varnowIndex=array.indexOf(random);

/*设置出口,当要放进去的片段只有2项的时候就可以收工了*/
if(arrayTemp.length<=2){
return;
}
/*递归,同时应用其左右两个区域*/
fastSort(array,head,nowIndex);
fastSort(array,nowIndex+1,tail);
}

JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。

sort() 方法用于对数组的元素进行排序。语法如下:

arrayObject.sort(sortby)

例如:
functionNumAscSort(a,b)
{
returna-b;
}
functionNumDescSort(a,b)
{
returnb-a;
}
vararr=newArray(3600,5010,10100,801);
arr.sort(NumDescSort);
alert(arr);
arr.sort(NumAscSort);
alert(arr);
阅读全文

与js数组对象排序sort相关的资料

热点内容
如何将excel表格转成文件包 浏览:1
网络配置文件应该怎么设置 浏览:886
苹果全能文件王下载位置 浏览:700
中国知网是哪些数据库 浏览:280
fastjson优点 浏览:302
mstcam数控铣床编程如何串连 浏览:502
d4252用什么软件编程 浏览:35
大学生如何参与大数据 浏览:779
autocad3维教程 浏览:2
港澳台版本有什么区别 浏览:263
java四个月能学到什么 浏览:46
开发板和linux文件 浏览:202
appstore外国帐号怎么看预约游戏 浏览:137
有什么免费加速网站的cdn 浏览:781
哪个文件存在最安全 浏览:199
淘宝导航栏分割线代码 浏览:271
win10开不了机按f8没用 浏览:12
河南营销网站推广多少钱 浏览:135
华为畅享6手机文件管理 浏览:939
linux驱动环境 浏览:893

友情链接