JS中 数组对数组里面的元素排序 怎么做啊?

JavaScript06

JS中 数组对数组里面的元素排序 怎么做啊?,第1张

var arr=[12,9,2,31,11,23,17]

var arr1=new array()//奇数

var arr2=new array()//偶数

for(var i=0i<arr.lengthi++)

{

if(arr[i]%2==1)

{

arr1.add(arr[i])

}

else

{arr2.add(arr[i])}

}

arr1.sort(function(a,b){

return a-b})

arr2.sort(function(a,b){

return b-a})

arr=arr1.concat(arr2)

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中数组重排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

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

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

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

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

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

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

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

好,Javascript中的数字数组排序非常简单,JS本身提供了内置的排序方法,直接调用就可以了。

1.var arr = [1, 20, 49, 32, 43, 69]

2.arr.sort()

3.console.log(arr) // [1, 20, 32, 43, 49, 69]