按数组顺序排列对象

Order an object from array order

本文关键字:对象 排列 顺序 数组      更新时间:2023-11-08

我试图通过使用嵌套在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/

有没有一种更正确/更有效的方法可以让我做到这一点?

数组也是一种有效的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>");
});

瞧!