数组对象排序

数组对象排序

这样的排序是有问题的,如果有两个值的排序是一样的,排序排出来的顺序就不正确

sortFun (attr,rev){
       //第二个参数没有传递 默认升序排列
       if(rev ==  undefined){
           rev = 1;
      }else{
           rev = (rev) ? 1 : -1;
      }
       return function(a,b){
           a = a[attr];
           b = b[attr];
           if(a < b){
               return rev _ -1;
          }
           if(a > b){
               return rev _ 1;
          }
           return 0;
      }
},

let arr=[
    {
        name:`一`,
        number:1,
    },
    {
        name:`二`,
        number:2,
    }
]

arr.sort(this.sortFun(`number`))

参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

使用下面这个方式排序

var sdts = [
	{name:"小明",age:10},
	{name:"小红",age:20},
	{name:"小花",age:40},
	{name:"小明",age:10},
	{name:"小红",age:20},
	{name:"小明",age:10},
	{name:"小红",age:20},
	{name:"小花",age:40},
	{name:"小明",age:10},
	{name:"小红",age:20},
	{name:"小花",age:40},
];
		
function compare(property,desc) {
	return function (a, b) {
		var value1 = a[property];
		var value2 = b[property];
		if(desc==true){
			// 升序排列
			return value1 - value2;
		}else{
			// 降序排列
			return value2 - value1;
		}
	}
}
// console.log(sdts.sort(compare("age",true)))
console.log(sdts.sort(compare("age",false)))

posted @ 2020-07-14 22:30  南风晚来晚相识  阅读(606)  评论(0编辑  收藏  举报