用javascript 将对象按属性名称排序重组

JavaScript025

用javascript 将对象按属性名称排序重组,第1张

//定义一个对象数组

 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.