最近在做功能的时候需要对后台返回的对象数组根据key值进行排序,平时我们对数组进行排序一般用到的比较多就是sort直接使用,其实sort方法是可以入参函数进行排序的。
语法:arrayObject.sort(sortby)
sortby:可选,规定排序顺序。必须是函数。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
-
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
-
若 a 等于 b,则返回 0。
-
若 a 大于 b,则返回一个大于 0 的值。
代码如下:
let arr = [
{
id: 1,
name: 'zuc1',
age: 21,
arr: [1, 2, 3, 3]
},
{
id: 11,
name: 'zuc2',
age: 32,
arr: [1, 2, 3, 3, 4, 5]
},
{
id: 3,
name: 'zuc3',
age: 1,
arr: [1, 2]
},
{
id: 4,
name: 'zuc4',
age: 6,
arr: [3]
}
];
// 排序函数
function objArraySort(objArr, key) {
let result = objArr.slice(0);
return result.sort((a, b) => a[key] - b[key]);
}
console.log('id排序');
console.log(objArraySort(arr, 'id'));
console.log('age排序');
console.log(objArraySort(arr, 'age'));
运行结果如下:
这样就可以实现对key值返回的对应的对象数组排序了。
结束语:今天年28了,还有两天就大年初一了,楼下的店子都基本关门了,深圳的人基本该回去的都回去了,深圳慢慢的成了空城,明天中午坐车回去,这是今年的最后一篇博客了,毕业5年,还有三个月做技术就刚好满4年,还是知道自己有很多的不足之处,一直在努力中,相信自己会越来越好的。