从数组顺序排序对象

时间:2013-11-26 12:27:13

标签: javascript jquery json

我试图通过使用嵌套在其中的整数值来订购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/

我应该采用更正确/有效的方式吗?

1 个答案:

答案 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>");
});

瞧!