javasctrpt里面怎么实现对ajax的json的数据排序,按照特定的字段怎么排序?
JavaScript中数组Array.sort()排序方法详解
https://www.jb51.net/article/107153.htm
var json = {
pageIndex: '1',
pageSize: '10',
data: [
{'a':'1','b':'2','c':'23'},
{'a':'11','b':'22','c':'43'},
{'a':'3','b':'24','c':'31'},
{'a':'13','b':'32','c':'33'}
]
};
/*对json进行排序
顺序 asc 升序,desc 倒序
做过微信小程序,里面的json可以获取后进行处理,想法是split后sort
读取数据源的时候就先排了哦,如果要反过来,就从另外一边循环过来刄对了。
关键方法:sort()用于对数组的元素进行排序。
return a.num-b.num是升序;
return b.num-a.num;是降序
writeln在输出后面加\n,在文档里是换行,在html里是解释称空格。
sort_key=True
<!DOCTYPE html>
楼主可参见这篇文章,有详细介绍。
js中json对象数组按对象属性排序https://www.cnblogs.com/jasonwang2y60/p/6656103.html
json数据进行排序如:{'b':2,'a':2,'3':1,'6':5,'4':3};
注:当遇到相同的value值时,会对键进行比较。主要是数组中sort方法的比较函数编写
方法一:
使用JavaScript提供的sort()方法进行排序,注意,sort()方法中接受函数(必须是函数),该函数的作用是对排序的顺序进行规则指定,如果不给sort()方法传该函数,则表示按照两个参数的字符串的字母在Unicode编码中的位置先后进行排序,注意如果不是字符串,需要转换成字符串然后再进行默认排序。
传给sort()方法的函数用来表示排序的规则,该函数要比较两个值,然后返回一个用于说明这两个值关系的数值:0、小于0的任何值、大于0 的任何值
0表示: 按照函数定义的规则,比较数值后,比较的结果是两个数值相等;
大于零的值表示: 按照指定的函数比较规则,比较出来的结果是前者大于后者,
比较后,较大的会排到后面去;
小于零的值表示:按照指定的函数比较规则,前者小于后者
总之,比较后hi自动排序,按照小的在前面大的在后面的排序方式进行排序(有点像按照默认的Unicode码排序的规则了)
其实主要还是要看比较参数的选取,以及比较函数的编写合不合理,不要剑走偏锋,找一些不常见的规律,很容易出问题的
json数据进行排序如:{'b':2,'a':2,'3':1,'6':5,'4':3};
注:当遇到相同的value值时,会对键进行比较。主要是数组中sort方法的比较函数编写
使用JavaScript提供的sort()方法进行排序,注意,sort()方法中接受函数(必须是函数),该函数的作用是对排序的顺序进行规则指定,如果不给sort()方法传该函数,则表示按照两个参数的字符串的字母在Unicode编码中的位置先后进行排序,注意如果不是字符串,需要转换成字符串然后再进行默认排序。
传给sort()方法的函数用来表示排序的规则,该函数要比较两个值,然后返回一个用于说明这两个值关系的数值:0、小于0的任何值、大于0 的任何值
0表示: 按照函数定义的规则,比较数值后,比较的结果是两个数值相等;
大于零的值表示: 按照指定的函数比较规则,比较出来的结果是前者大于后者,
比较后,较大的会排到后面去;
小于零的值表示:按照指定的函数比较规则,前者小于后者
总之,比较后hi自动排序,按照小的在前面大的在后面的排序方式进行排序(有点像按照默认的Unicode码排序的规则了)
function jsonSort(array, field, reverse) {
//数组长度小于2 或 没有指定排序字段 或 不是json格式数据
if(array.length < 2 || !field ||typeof array[0] !=="object") return array;
//数字类型排序
if(typeof array[0][field] === "number") {
array.sort(function(x, y) {return x[field] - y[field]});
}
//字符串类型排序
if(typeof array[0][field] === "string") {
array.sort(function(x, y) {return x[field].localeCompare(y[field])});
}
//倒序
if(reverse) {
array.reverse();
}
return array;
}
function sortJson(json,key){
for (var i = 0; i < json.length; i++) {
for (var j = 0; j < json.length-1; j++) {
if (json[j][key]>json[j+1][key]) {
var temp=json[j];
json[j]=json[j+1];
json[j+1]=temp;
};
};
};
return json;
};
有时需要根据json对象的某个属性排序json数组,javascript端有sort这个函数,代码如下
/**
用sort排序就可以了
顺序 asc 升序,desc 倒序,也可使用sort()
/*
* @description 根据某个字段实现对json数组的排序
* @param array 要排序的json数组对象
* @param field 排序字段(此参数必须为字符串)
* @param reverse 是否倒序(默认为false)
* @return array 返回排序后的json数组
*/
functionjsonSort(array, field, reverse) {
//数组长度小于2 或 没有指定排序字段 或 不是json格式数据
if(array.length < 2 || !field ||typeof array[0] !=="object") returnarray;
//数字类型排序
if(typeofarray[0][field] === "number") {
array.sort(function(x, y) {return x[field] - y[field]});
}
//字符串类型排序
if(typeofarray[0][field] === "string") {
array.sort(function(x, y) {return x[field].localeCompare(y[field])});
}
//倒序
if(reverse) {
array.reverse();
}
returnarray;
}
只能先将其所有属性提取出来,然后排序,之后再逐一赋值,代码如下:
function sortObject(obj) {
// 先获取所有属性名
var keys = [];
for (var key in obj)
{ keys.push(key); }
// 排序
keys.sort();
// 导出新的对象
var r = {};
for (var i = 0; i < keys.length; i++)
{ key = keys[i]; r[key] = obj[key]; }
return r;
}
var result = { 'a3': 3, 'a2': 2, 'a1': 1 }
// 输出测试
console.log(result, sortObject(result));
最笨也最安全的办法,循环用冒泡排序吧
function JsonSort() {
//测试Json数据
var obj = [{ a: change2Date("2012-1-7"), b: 55, c: 66 }, { a: change2Date("2012-1-5"), b: 22, C: 33 }, { a: change2Date("2012-1-6"), b: 88, c: 99}];
var str = "";
//原顺序
for (var i = 0; i < obj.length; i++) {
str = str + obj[i].a+ "
";
}
str = str + "
//排序
obj.sort(function (a, b) {
return b.a- a.a;
});
//升序排序后
for (var i = 0; i < obj.length; i++) {
str=str+obj[i].a+ "
";
}
document.write(str);
}
详情见https://blog.csdn.net/wdhhxbb/article/details/72832796
function sortObject(obj)
{
// 先获取所有属性名
var keys = [];
for (var key in obj)
{
keys.push(key);
}
// 排序
keys.sort();
// 导出新的对象
var r = {};
for (var i = 0; i < keys.length; i++)
{
key = keys[i];
r[key] = obj[key];
}
return r;
}
var result = {
'a3': 3,
'a2': 2,
'a1': 1
}
// 输出测试
console.log(result, sortObject(result));
java后台的话,把他换成集合,然后用lambda搞定
JavaScript中数组Array.sort()排序方法详解
读取数据源的时候就先排序,按照顺序就可以了