/*
JSON排序方法 - 原生sort方法扩展
var obj = [
{b: '3', c: 'c'},
{b: '1', c: 'a'},
{b: '2', c: 'b'}
];
obj.sort(sortBy('b', false, parseInt));
console.log(obj); 按照b的数字大小排序 正序
obj.sort(sortBy('b', false, String));
console.log(obj); 按照b的字符串大小排序 正序
----------------------------------------------
@function filed 要排序的键值
@param rev 正序或者倒叙 false正序 true倒叙
@param primer 排序比较格式化方法 parseInt String 或其它自定义的函数
*/
var sortBy = function (filed, rev, primer) {
rev = (rev) ? -1 : 1;
return function (a, b) {
a = a[filed];
b = b[filed];
if (primer && typeof (primer) != 'undefined') {
a = primer(a);
b = primer(b);
}else{
if(!isNaN(a) && !isNaN(a)){
a = Number(a);
b = Number(b);
}
}
if (a < b) { return rev * -1; }
if (a > b) { return rev * 1; }
return 1;
}
};
案例
//声明一个json数组
var obj = [
{b: '3', c: 'c'},
{b: '1', c: 'a'},
{b: '2', c: 'b'}
];
//自动识别排序,如果b是数字按照数字排序
obj.sort(sortBy('b', false));
console.log(obj);
//按照b的整数排序
obj.sort(sortBy('b', false, parseInt));
console.log(obj);
//按照b的字符串
obj.sort(sortBy('b', false, String));
console.log(obj);
var data = [{
name: "海外事业部",
value: 0.58
}, {
name: "内销",
value: 0.36
}, {
name: "互联网中心",
value: 0.78
}];
//定义一个比较器--降序排列
function compare(propertyName) {
return function(object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if(value2 < value1) {
return -1;
} else if(value2 > value1) {
return 1;
} else {
return 0;
}
}
}
console.info(JSON.stringify(data));
//使用方法
data.sort(compare("value"));
console.info(JSON.stringify(data));
//Json数组去重
<script type="text/javascript">
var obj=[{
id:1,
name:'张甜甜',
age:20
},{
id:2,
name:'一丢丢',
age:22
},{
id:1,
name:'张甜甜',
age:20
},{
id:3,
name:'zen',
age:28
},{
id:5,
name:'张小颖',
age:22
},{
id:2,
name:'一丢丢',
age:22
},{
id:4,
name:'五河士道',
age:20
}];
for(var i=0;i<obj.length;i++){
for(var j =obj.length - 1; j > 0; j--){
if(obj[i].id == obj[j].id && i != j){
obj.splice(j, 1);
}
}
}
</script>