我试图通过使用嵌套在其中的整数值来订购JSON对象。我采取的方法是尽可能轻松地对输入数据进行排序。我用它创建了一个新的JSON对象:
var newDataFormat = {"route": route, "destination": destination, "countdown": countdown};
busJSON.push(newDataFormat);
然后我创建一个数组作为排序机制。它采用'倒计时'整数,然后按该数字排序:
for (var i = totalStops - 1; i >= 0; i--) {
countdownArray.push(parseInt(busJSON[i].countdown));
}
countdownArray.sort(function(a,b){return a - b});
有了这些,我有最后一个循环,将信息推送到浏览器:
for (var i = dataMin; i < dataMax; i++) {
if (countdownArray[i] === i) {
items.push("<tr><td>" + busJSON[i].route + "</td><td>" + busJSON[i].destination + "</td><td>" + busJSON[i].countdown + "</td></tr>");
}
}
问题似乎并没有将所有项目推到浏览器中,我在这里做了一个演示:
http://tfl.applied-espi.com/bus-popup/
我应该采用更正确/有效的方式吗?
答案 0 :(得分:1)
数组也是一种有效的json格式,因此您可以拥有
var busJSON = [];
然后你将一些对象推送到它并希望由对象的成员对它们进行排序
busJSON.push({"route": route, "destination": destination, "countdown": countdown});
所以你现在有了一个对象数组,因为我们知道数组可以排序,所以我们按倒计时值对它进行排序
busJSON.sort(function(a,b){return a.countdown - b.countdown});
现在我们将对象按升序排序,因此我们对数组中的每个元素执行一些操作
busJSON.forEach(function(value) {
items.push("<tr><td>" + value.route +
"</td><td>" + value.destination +
"</td><td>" + value.countdown + "</td></tr>");
});
瞧!