首先,我有一个JSON对象,例如:
{
"allSitesInfo": [{
"title": "Site001",
"website": "http://www.example.com/",
"lat": "22.70896",
"lng": "120.35197",
"content": {
"PR": "87.89",
"kWh": "1700"
},
"type": "grn-blank"
}
]
}
这是我的所有网站列表。包含四种类型的电站的能源状况。 但是,我需要根据优先级重新排序列表。
优先级从高到低:
以下是我的代码段:
function GetRealTimeList() {
var url = "ajaxHandler.jhp";
var args = {};
args["task"] = "GetRealTimeList";
$.ajax({
"url": url,
method: "GET",
data: args,
})
.done(function (data) {
var allSites = JSON.parse(data);
for (var i = 0; i < allSites["allSitesInfo"].length; i++) {
$("#custom-search-site").append("<li><img src=\"img/paddle/"+ allSites["allSitesInfo"][i]["type"] +"_maps.png\" class=\"blank\"><span>"+ allSites["allSitesInfo"][i]["title"] +"</span></li>");
}
})
.fail(function (data) {
console.log("Get real time data fail. " + data);
});
}
如何在 javascript SE5 ?
中执行此操作答案 0 :(得分:5)
您可以将对象作为所需订单的哈希表,并使用该对象进行排序。
default
包含一个巨大的值A WebRTC browser for iOS developed in the open. Bowser is built on top of OpenWebRTC.,可以将未知类型排序到最后。
var order = { "X": 1, "pause": 2, "wht-stars": 3, "grn-blank": 4, default: Infinity };
array.sort(function (a, b) {
return (order[a.type] || order.default) - (order[b.type] || order.default);
});
答案 1 :(得分:0)
添加typeId取决于您希望如何对类型进行排序,例如
{
"allSitesInfo": [
{
"title": "Site001",
"website": "http://www.example.com/",
"lat": "22.70896",
"lng": "120.35197",
"content": {
"PR": "87.89",
"kWh": "1700"
},
"type": "x",
"typeid":1
},
{
"title": "Site001",
"website": "http://www.example.com/",
"lat": "22.70896",
"lng": "120.35197",
"content": {
"PR": "87.89",
"kWh": "1700"
},
"type": "pause",
"typeid"2
},
{
"title": "Site001",
"website": "http://www.example.com/",
"lat": "22.70896",
"lng": "120.35197",
"content": {
"PR": "87.89",
"kWh": "1700"
},
"type": "wht-stars",
"typeid":3
},
{
"title": "Site001",
"website": "http://www.example.com/",
"lat": "22.70896",
"lng": "120.35197",
"content": {
"PR": "87.89",
"kWh": "1700"
},
"type": "grn-blank",
"typeid":4
}
]
}
并在升级到DOM之前对它们进行排序
答案 2 :(得分:0)
您可以使用array.sort
进行排序。这是最终的代码:
function GetRealTimeList() {
var url = "ajaxHandler.jhp";
var args = {};
args["task"] = "GetRealTimeList";
$.ajax({
url: url,
method: "GET",
data: args,
})
.done(function (data) {
var allSites = JSON.parse(data);
var sorted = allSites.allSitesInfo.sort(compare)
sorted.forEach((item, index) => {
$("#custom-search-site").append(
"<li><img src=\"img/paddle/" + allSites["allSitesInfo"][i]["type"] + "_maps.png\" class=\"blank\"><span>" + allSites["allSitesInfo"][i]["title"] + "</span></li>"
);
})
})
.fail(function (data) {
console.log("Get real time data fail. " + data);
});
}
function compare(a, b) {
var order = {
"X": 0,
"pause": 1,
"wht-stars": 2,
"grn-blank": 3
};
// a should come first
if (order[a.type] < order[b.type]) {
return -1;
}
// b should come first
else if (order[a.type] > order[b.type]) {
return 1;
};
return 0;
}
答案 3 :(得分:0)
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
var allSites = JSON.parse(data);
let m = {"X":1, "pause":2, "wht-stars":3, "grn-blank":4}
var sortedData = allSites.sort((a,b)=> {return a[m[type]]> b[m[type]]; });
// print result
答案 4 :(得分:0)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
你可以使用排序功能我创建一个键对象来分配一个值和类型的名称,然后使用sort函数重新排序元素
const sites = [
{
"type": "X"
},
{
"type": "wht-stars"
},
{
"type": "pause"
},
{
"type": "grn-blank"
}
];
const key = {
"grn-blank": 1,
"pause": 0,
"wht-stars": -1,
"X": -2
}
const arr = sites.sort((a, b) => key[a.type] < key[b.type] ? 1 : -1);
console.log(arr)
&#13;