var data = [{ name: "jiang", age: 22 }, { name: "AAAAAAAAAAAAAA", age: 21 }, { name: "CCCCCCCCc", age: 25}]
//定义一个比较器
function compare(propertyName) {
return function (object1, object2) {
var value1 = object1[propertyName]
var value2 = object2[propertyName]
if (value2 <value1) {
return -1
}
else if (value2 >value1) {
return 1
}
else {
return 0
}
}
}
//使用方法
data.sort(compare("name"))
alert(data[0].name)//jiang
//使用方法
data.sort(compare("age"))
alert(data[0].age)//25s
JS数组多条件排序基于Array.sort()方法,首先要了解sort()方法的用法。
sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序。
eg:
sort()方法接收函数作为参数时,排序主要根据传入函数的返回值是否大于0进行排序。
1)当 a-b <0时,则a元素排在b元素的前面;(a、b元素位置不变)
2)当a-b= 0时,a,b元素的位置不变;
3)当a-b >0时,则b元素排在a元素的前面。(a、b元素位置交换)
当数组元素为对象时,若要根据对象的多个属性进行排序,就涉及到多条件排序。
主要有三种方式,for...in 、Object.keys(obj)、Object.getOwnPropertyNames(obj):
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>遍历对象的几种方式</title>
</head>
<body>
</body>
<script>
const obj = {
a:1,
b:true,
c:"hello"
}
//方式1:for in方式
for(let key in obj){
console.log(key)
}
//Object.keys 方式 直接返回一个数组
console.log(Object.keys(obj))
console.log(Object.getOwnPropertyNames(obj))
</script>
</html>
如果想要了解他们具体的区别的话,可以看下这篇博客JS中三种主要的遍历对象的方法:for in、Object.