[英]How to sort an array of objects?
我有一個對象數組:
var data= [{
"title": "All pages",
"page": "all",
}, {
"title": "Post with builder",
"page": "pt_post_6188",
}, {
"title": "Blog Categories",
"page": "tx_category",
}, {
"title": "Single Blog Posts",
"page": "pt_post",
}];
以及由對象項標題構成的排序順序數組。
var order = ["Post with builder", "All pages", "Blog Categories", "Single Blog Posts"];
我如何按順序數組對第一個數組進行排序,以便新數據像這樣
var newdata= [{
"title": "Post with builder",
"page": "pt_post_6188",
}, {
"title": "All pages",
"page": "all",
}, {
"title": "Blog Categories",
"page": "tx_category",
}, {
"title": "Single Blog Posts",
"page": "pt_post",
}];
?
與參考文章不同。 我按沒有任何特定邏輯的特定順序數組進行排序。
您可以將對象用作哈希表
{
"Post with builder": 0,
"All pages": 1,
"Blog Categories": 2,
"Single Blog Posts": 3
}
索引並對其進行排序。
var data = [{ "title": "All pages", "page": "all", }, { "title": "Post with builder", "page": "pt_post_6188", }, { "title": "Blog Categories", "page": "tx_category", }, { "title": "Single Blog Posts", "page": "pt_post", }], order = ["Post with builder", "All pages", "Blog Categories", "Single Blog Posts"], orderObject = {}; order.forEach(function (a, i) { orderObject[a] = i; }) data.sort(function (a, b) { return orderObject[a.title] - orderObject[b.title]; }); document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
由於您已經將訂購數組索引作為一種哈希值用於訂購參考,因此我們可以像這樣簡單地使用它們:
sorted = Array(order.length);
data.forEach((c,i) => sorted[order.indexOf(c.title)] = c);
//使用loadash
var data= [{
"title": "All pages",
"page": "all",
}, {
"title": "Post with builder",
"page": "pt_post_6188",
}, {
"title": "Blog Categories",
"page": "tx_category",
}, {
"title": "Single Blog Posts",
"page": "pt_post",
}];
var order = [“帶有構建器的帖子”,“所有頁面”,“博客類別”,“單個博客帖子”];
function (data, order){
return _.reduce(order, function (output, v) {
output.push(_.filter(data,{title:v})[0]);
return output;
},[]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.