javascript JS:sort_custom

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript JS:sort_custom相关的知识,希望对你有一定的参考价值。


[1]知乎按赞同排序:
var binded = false
  var loop = setInterval(bindMyEvent, 1000)

  function bindMyEvent() {
    if (binded) {
      clearInterval(loop)
      return
    }
	//加入按钮
    var e = document.querySelectorAll('div.List-headerOptions div.Popover')[0]
    if (e === undefined) { return }
    binded = true
	//加入按钮的事件
    e.addEventListener('click', function () {
      setTimeout(function () {
        var sorts = document.querySelector('div.Select-list.Answers-select')
		//创建按钮
        var butt = document.createElement('button')
        butt.className = 'Select-option'
        butt.innerText = '按赞同排序'
		//事件与函数相连接
        butt.addEventListener('click', sortByLikes)
        sorts.appendChild(butt)

        function sortByLikes() {
		//提取待排序的dom,用css selector
        var answers = document.querySelectorAll('div.List-item')
        if (answers.length === 0) {
            return
          }
		  //获得父路径
          var parent = answers[0].parentElement
		  //
          var likes = []
          for (var i = 0; i < answers.length; i++) {
			//提取每个元素中的数字
            var temp = answers[i].getElementsByClassName('Voters')[0]
			//对"空"的特殊处理,将其转为0
            var n = temp ? temp.innerText : '0'
			//parseInt() 函数可解析一个字符串,并返回一个整数。
            n = parseInt(n.split(' ')[0])
			//填入数组
            likes.push([n, i])
          }
		  //调用自定义函数,进行排序
          likes = likes.sort(descendByFirst)
		  //加载回原结构
          for (i = 0; i < likes.length; i++) {
            parent.appendChild(answers[likes[i][1]])
          }
        }
        
        //自定义排序函数
        function descendByFirst(x, y) {
		  //降序排列
          return y[0] - x[0]
        }
      }, 0)
    })
  }









[1]
//可以对对象中的任何属性进行排序
function sortByProperty (property){
     function sortfun (obj1,obj2){
  //核心代码
          if (obj1[property] > obj2[property]) return 1
          else if (obj1[property] < obj2[property]) return -1
          else if (obj1[property] == obj2[property]) return 0
     }
     return sortfun
}

function person (name,age){
     this.name = name;
     this.age = age;
}
var p1 = new person("zeon",30)
var p2 = new person("leon",20)
var p3 = new person("aeon",60)

var p = [p1,p2,p3]
p.sort(sortByProperty("name"))

var show = function (array){
    
   for (var i = 0; i < array.length; i++) {
           console.log(array[i].name+"  "+array[i].age);
   }
}

show(p)

另:
var objs = {
    f: {
        id: 2,
        name: '2'
    }, 
    a: {
        id: 3,
        name: '3'
    }, 
    c: {
        id: 1,
        name: '1'
    }
};
// 自定义排序规则,按对象的id排序
var sortedObjKeys = Object.keys(objs).sort(function(a, b) {
    return objs[b].id - objs[a].id;
});

// 按默认排序规则,按对象的key排序
var sortedObjKeys = Object.keys(objs).sort();

for (var index in sortedObjKeys) {
    console.log(sortedObjKeys[index]);
    console.log(objs[sortedObjKeys[index]]);
    console.log('----------');
}

以上是关于javascript JS:sort_custom的主要内容,如果未能解决你的问题,请参考以下文章

2021-08-09打卡js笔记

javascript JS:如何使用reduce()function.js #javascript #js #reduce查找数字数组的总和

javascript [js:is()]从JavaScript Garden验证数据类型方法。 #js

JavaScript基础和js概括

JavaScript笔记--- JS概述;HTML中嵌入JS代码的三种方式

Web前端-JS基础