回答就能赚C币,请问怎么对json里的数据进行排序?

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进行排序

  • array 数组
  • key 键
  • 顺序 asc 升序,desc 倒序 */ function sortJson(array, key, order) { return array.sort(function(index, next) { var a = index[key]; var b = next[key]; if("asc" == order){ return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }else{ return ((a > b) ? -1 : ((a < b) ? 1 : 0)); } }); } sortJson(json.data,'c','asc'); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 一般性的方法,有时候有些特殊的排序需求,可以自己改。javascript非常灵活。

顺序 asc 升序,desc 倒序

做过微信小程序,里面的json可以获取后进行处理,想法是split后sort

读取数据源的时候就先排了哦,如果要反过来,就从另外一边循环过来刄对了。

关键方法:sort()用于对数组的元素进行排序。
return a.num-b.num是升序;
return b.num-a.num;是降序
writeln在输出后面加\n,在文档里是换行,在html里是解释称空格。

sort_key=True

<!DOCTYPE html>






//按升序排列 function up(x,y){ return x.value-y.value } //利用jquery中的getJson方法获取json数据 $.getJSON("../../assets/data/test.json","",function(data){ var newdata=data.result newdata.sort(up); //打印排序后的数据到控制台 console.log(newdata); //注意sort()在原数据上进行排序,不生成副本 console.log(data); })


楼主可参见这篇文章,有详细介绍。
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这个函数,代码如下

/**

  • json对象数组按照某个属性排序:降序排列
  • @param {Object} propertyName */ function compareDesc(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; } } }

用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()排序方法详解

读取数据源的时候就先排序,按照顺序就可以了