JavaScript 数组排序,随机排序,查找最大(最小)值,对象属性进行排序

JavaScript 数组排序

1.数组排序- - -sort()

根据首字符进行排序,a-z。注意:会改变原数组

var array=["c","d","e","a"]
document.write(array.sort())

a,c,d,e

2.反转数组- - - reverse()

表面意思,前后反转。注意:会改变原数组

var array=["a","b","c","d"]
document.write(array.reverse())

d,c,b,a

3.数字排序- - -sort()+比值函数

按数字大小排序

function sortNumber(a, b)
{
return b - a
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

结果(这里需要写一个比值函数,不然就会按照第一个数字进行排序),从小到打就a,b交换位置。

10,5,40,25,1000,1
1000,40,25,10,5,1

3.1比值函数

比较函数的目的是定义另一种排序顺序。
比较函数应该返回一个负,零或正值,这取决于参数:
function(a, b){return a-b}
当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。
实例:
当比较 40 和 100 时,sort() 方法会调用比较函数 function(40,100)。
该函数计算 40-100,然后返回 -60(负值)。
排序函数将把 40 排序为比 100 更低的值。
您可以使用下面的代码片段来测试数值和字母排序:

<button onclick="myFunction1()">以字母顺序排序</button>
<button onclick="myFunction2()">以数字顺序排序</button>

<p id="demo"></p>

<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
		points.sort();
		document.getElementById("demo").innerHTML  = points;
}
function myFunction2() {
		points.sort(function(a, b){return  a - b});
		document.getElementById("demo").innerHTML = points;
}
</script>

4.随机顺序排序数组

也是基于比值函数的,通过Math.random()生成一个0-1的小数

function sortArray(a, b)
{
return 0.5-Math.random()
}

var array=[1,2,3,4]
document.write(array)
document.write("<br/>")
document.write(array.sort(sortArray))

5.查找数组最大值(最小值)

除了使用sort+比值函数来查找以外,还可以通过Math.max.apply与Math.min.apply直接查找值

var array=[1,2,3,4]
document.write(Math.max.apply(null, array))
document.write("<br/>")
document.write(Math.min.apply(null, array))

4
1

6.对象属性进行排序(高级)

       var array = [
            { id: 9, name: 'jack' },
            { id: 15, name: 'tom' },
            { id: 1, name: 'lili' }
        ]
       
        function sortArray(a, b) {
            return a.id - b.id
        }
        array.sort(sortArray)
        for (var i = 0; i < array.length; i++) {
            document.write(array[i].id + ':' + array[i].name)
            document.write("<br/>")
        }

1:lili
9:jack
15:tom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值