原生js实现对象数组根据key值排序

最近在做功能的时候需要对后台返回的对象数组根据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年,还是知道自己有很多的不足之处,一直在努力中,相信自己会越来越好的。

发布了165 篇原创文章 · 获赞 139 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/CodingNoob/article/details/104073455