Javascript 如何根据特定值对json数据进行排序?
我使用此代码获取以下Json数据Javascript 如何根据特定值对json数据进行排序?,javascript,jquery,json,sorting,Javascript,Jquery,Json,Sorting,我使用此代码获取以下Json数据 function nextDepartures(minutes=120) { var modeId = 0; var stopId = 1042; var limit = 2; xhr(broadNextDeparturesURL(modeId, stopId, limit), broadNextDeparturesCallback); var nowDate = new Date(); nowDate.setMinutes(nowDate.getMinut
function nextDepartures(minutes=120)
{
var modeId = 0;
var stopId = 1042;
var limit = 2;
xhr(broadNextDeparturesURL(modeId, stopId, limit), broadNextDeparturesCallback);
var nowDate = new Date();
nowDate.setMinutes(nowDate.getMinutes()+minutes);
for(var i =0; i < broadjson[0].values.length;i++) {
var date = new Date(broadjson[0].values[i].time_timetable_utc);
var minutes;
if (date < nowDate) {
if (date.getMinutes() < 10) {
minutes = "0" + date.getMinutes();
}
else {
minutes = date.getMinutes();
}
else {
document.getElementById("depart").innerHTML += "<tr>" +
"<td width='30%'>" + date.getHours() + ":" + minutes + "</td>" +
"<td>" + broadjson[0].values[i].platform.direction.line.line_number +
" "
+ broadjson[0].values[i].platform.direction.direction_name + "</td>" +
"</tr>";
}
}
}
}
我想把这些数据按
values.platform.direction.line.line_number
这意味着将首先显示最低行号,最后显示最高行号。我尝试了Javascript函数sort(a,b),但它不起作用。问题是
values.platform.direction.line.line_number
是一个字符串值。那么,如何根据返回整数但以字符串形式存在的行号对数组进行排序呢?使用parseInt解析作为字符串传入的数字,并使用javascript排序函数对数组进行排序,如下所示
myArray.sort(function(a, b){
var lineA = parseInt(a.line_number),
lineB = parseInt(b.line_number);
if(lineA < lineB) return -1;
if(lineA > lineB) return 1;
return 0;
});
myArray.sort(函数(a,b){
var lineA=parseInt(a.line_编号),
lineB=parseInt(b.行号);
如果(lineAlineB)返回1;
返回0;
});
您可以直接使用行号的增量进行排序。负号将两部分都转换为数字
var数据={
价值观:[
{平台:{方向:{线路:{线路编号:“250”}}},
{平台:{方向:{线路:{线路编号:“150”}}},
{平台:{方向:{线路:{线路编号:“110”}}}
]
};
数据.值.排序(函数(a,b){
返回a.platform.direction.line.line\u编号-b.platform.direction.line.line\u编号;
});
控制台日志(数据)代码>
。作为控制台包装器{max height:100%!important;top:0;}
使用javascript排序函数和compare param在stackoverflow中曾经问过类似的问题。查看此链接。检查此答案,您可以使用javascript排序函数解析int并比较值。可能重复
myArray.sort(function(a, b){
var lineA = parseInt(a.line_number),
lineB = parseInt(b.line_number);
if(lineA < lineB) return -1;
if(lineA > lineB) return 1;
return 0;
});