Skip to content

介绍

项目中学生答题结束,题干类型单选题和多选题混乱在一起呈现,需求想分开,单选题在前面,多选题在后面。

届时想到 sort 排序。

sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串 UniCode 码。因为排序是按照字符串 UniCode 码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。

用法:arrayObject.sort(sortby);

参数 sortby 可选,用来规定排序的顺序,但必须是函数。

数组中对象某个值排序

查看数据结构如下:

items: [
	{pk_exam_use_question: "586601", is_send: "0", fk_question: "11494", fk_exam: "103", object_id: "3690",…}
	{pk_exam_use_question: "586608", is_send: "0", fk_question: "11496", fk_exam: "103", object_id: "3690",…}
	{pk_exam_use_question: "586615", is_send: "0", fk_question: "333754", fk_exam: "103",…}
	{pk_exam_use_question: "586622", is_send: "0", fk_question: "333838", fk_exam: "103",…}
	{pk_exam_use_question: "586629", is_send: "0", fk_question: "332902", fk_exam: "103",…}
	{pk_exam_use_question: "586636", is_send: "0", fk_question: "332901", fk_exam: "103",…}
	{pk_exam_use_question: "586643", is_send: "0", fk_question: "333845", fk_exam: "103",…}
]
items: [
	{pk_exam_use_question: "586601", is_send: "0", fk_question: "11494", fk_exam: "103", object_id: "3690",…}
	{pk_exam_use_question: "586608", is_send: "0", fk_question: "11496", fk_exam: "103", object_id: "3690",…}
	{pk_exam_use_question: "586615", is_send: "0", fk_question: "333754", fk_exam: "103",…}
	{pk_exam_use_question: "586622", is_send: "0", fk_question: "333838", fk_exam: "103",…}
	{pk_exam_use_question: "586629", is_send: "0", fk_question: "332902", fk_exam: "103",…}
	{pk_exam_use_question: "586636", is_send: "0", fk_question: "332901", fk_exam: "103",…}
	{pk_exam_use_question: "586643", is_send: "0", fk_question: "333845", fk_exam: "103",…}
]

数组中每个对象都有一个试题类型 type 字段,使用 1,2 表示。

编写函数处理试题排序:

sortExamType: function(type) {
		return function(x, y) {
			var v1 = x.type;
			var v2 = y.type;
			return v1 - v2;
		}
	}
sortExamType: function(type) {
		return function(x, y) {
			var v1 = x.type;
			var v2 = y.type;
			return v1 - v2;
		}
	}

其中:

比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。

若 a 等于 b,则返回 0。

若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。

调用:

list = list.sort(sortExamType('type'))
list = list.sort(sortExamType('type'))