📜  数组按键排序javascript(1)

📅  最后修改于: 2023-12-03 15:26:12.046000             🧑  作者: Mango

数组按键排序javascript

在JavaScript中,可以使用Array.sort()方法对数组进行排序。排序时,可以按照数组元素的值来排序,也可以按照数组元素的键来排序。

按键排序

如果数组的键是数字,则可以通过Array.sort()方法按照键值排序。以下是按键排序的示例代码:

let arr = [5, 2, 9, 1, 5];
arr.sort(function(a, b) {
   return a - b;
});
console.log(arr); // [1, 2, 5, 5, 9]

在上面的代码中,sort()方法接受一个函数参数,该函数定义了比较规则。如果函数返回值小于0,则a排在b前面;如果函数返回值等于0,则a和b的位置不变;如果函数返回值大于0,则b排在a前面。因此,a - b表示数字按升序排序。

按键排序(字符串)

如果数组的键是字符串,则可以使用Object.keys()方法先获取键名数组,再对键名数组按照需要排序。以下是按键排序(字符串)的示例代码:

let obj = {name: 'Mike', age: 23, gender: 'male'};
let keys = Object.keys(obj);
keys.sort();
for (let i = 0; i < keys.length; i++) {
   let key = keys[i];
   console.log(key + ': ' + obj[key]);
}

在上面的代码中,Object.keys()方法返回一个包含所有键名的数组。该数组可以使用Array.sort()方法按照需要排序。排序后,可以通过键名遍历对象,并访问相应的值。

上面的代码将按照字母顺序输出obj对象的属性名和对应的属性值。

按照属性值排序

除了按照键名排序外,还可以按照属性值排序。以下是按照属性值排序的示例代码:

let people = [
   {name: 'Mike', age: 23},
   {name: 'John', age: 18},
   {name: 'Jane', age: 19}
];
people.sort(function(a, b) {
   return a.age - b.age;
});
console.log(people);

在上面的代码中,people数组包含三个对象,每个对象都有一个name属性和一个age属性。按照年龄升序排列对象。返回结果:

[
   {name: 'John', age: 18},
   {name: 'Jane', age: 19},
   {name: 'Mike', age: 23}
]

上面的代码通过传递一个匿名函数来指定按照哪个属性值排序。

结论

在JavaScript中,可以使用Array.sort()方法对数组进行排序。排序时,可以按照数组元素的值来排序,也可以按照数组元素的键来排序。对于键是数字的数组,可以通过sort()方法简单地按照键值排序。对于键是字符串的数组,需要先使用Object.keys()方法获取键名数组,再按照需要排序。对于按照属性值排序,可以通过传递一个匿名函数来指定排序属性。