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的主要内容,如果未能解决你的问题,请参考以下文章