let colors = 'red2 green3 white2'
// 根据属性的数字排序
function done(key,desc) {
return function(a,b){
//return desc ? ~~(parseInt(a[key]) < parseInt(b[key])) : ~~(parseInt(a[key]) > parseInt(b[key]));解决简单的json数组还行,但是遇到复杂重复比较多的数就不行了
return desc ? ((parseInt(a[key]) < parseInt(b[key]))?1:((parseInt(a[key]) > parseInt(b[key]))?-1:0)):((parseInt(a[key]) < parseInt(b[key]))?-1:((parseInt(a[key]) > parseInt(b[key]))?1:0)) //杠杠的,注意括号就是!
}
}
let solution = function (a) {
let arr = a.split(' ')
let indexArr = []
for (let i in arr) {
let obj = {
index: arr[i].substr(-1),
text:arr[i].slice(0,arr[i].length-1)
}
indexArr.push(obj)
}
indexArr.sort(done('index',false))
let result = []
for(let i in indexArr) {
result.push(indexArr[i]['text'])
}
result.join(' ')
let aaa = result.join(' ').toString()
return aaa
}
solution(colors)
这是一个归纳总结了的,可字符可数字排序!
var sortBy=function (filed,rev,primer){
rev = (rev) ? -1 : 1;
return function (a, b) {
a = a[filed];
b = b[filed];
if (typeof (primer) != 'undefined') {
a = primer(a);
b = primer(b);
}
if (a < b) { return rev * -1; }
if (a > b) { return rev * 1; }
return 1;
}
};
var obj=[
{b: '3', c: 'c'},
{b: '1', c: 'a'},
{b: '2', c: 'b'}
];
obj.sort(sortBy('b',false,parseInt));
console.log(obj);
评论(0)