Javascript 如何使用另一个json的顺序对json对象进行排序
我有一个公园列表(park_list),可以按距离和面积排序 我已成功使用以下代码按距离排序:Javascript 如何使用另一个json的顺序对json对象进行排序,javascript,arrays,json,angular,ionic3,Javascript,Arrays,Json,Angular,Ionic3,我有一个公园列表(park_list),可以按距离和面积排序 我已成功使用以下代码按距离排序: sortList(index){ return function(a, b){ return (a[index] === b[index] ? 0 : (a[index] < b[index] ? -1 : 1)); } } 我的区域列表如下所示: [ { "parkName" : "park4", "area_id" : "4"
sortList(index){
return function(a, b){
return (a[index] === b[index] ? 0 : (a[index] < b[index] ? -1 : 1));
}
}
我的区域列表如下所示:
[
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
{
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area3"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}
{
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}, {
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area1"
}
[
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
我需要根据区域ID在区域列表中的顺序对公园列表进行排序
如果我的区域列表是这样的:
[
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
{
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area3"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}
{
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}, {
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area1"
}
[
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
我的park_列表应按如下方式排序:
[
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
{
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area3"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}
{
"cityId": "1",
"areaId": "2",
"areaName": "area2"
}, {
"cityId": "1",
"areaId": "4",
"areaName": "area4"
}, {
"cityId": "1",
"areaId": "1",
"areaName": "area1"
}, {
"cityId": "1",
"areaId": "3",
"areaName": "area1"
}
[
{
"parkName" : "park2",
"area_id" : "2"
},
{
"parkName" : "park4",
"area_id" : "4"
},
{
"parkName" : "park1",
"area_id" : "1"
},
{
"parkName" : "park3",
"area_id" : "3"
},
]
我真的很难过。我非常感谢任何帮助。创建一个对象,使用方法保存每个
区域id的索引,然后使用该对象进行排序
const area_list_index = area_list.reduce((obj, { areaId }, i) => {
obj[areaId] = i;
return obj;
}, {})
park_list.sort((a, b) => area_list_index[a.area_id] - area_list_index[b.area_id])
let park_list=[{
“公园名称”:“公园4”,
“区域id”:“4”
},
{
“公园名称”:“公园2”,
“区域id”:“2”
},
{
“公园名称”:“公园1”,
“区域id”:“1”
},
{
“公园名称”:“公园3”,
“区域id”:“3”
},
]
让区域_列表=[{
“城市ID”:“1”,
“区域ID”:“2”,
“区域名称”:“区域2”
}, {
“城市ID”:“1”,
“区域ID”:“4”,
“区域名称”:“区域4”
}, {
“城市ID”:“1”,
“区域ID”:“1”,
“区域名称”:“区域1”
}, {
“城市ID”:“1”,
“区域ID”:“3”,
“区域名称”:“区域1”
}]
常量区域列表索引=区域列表。减少((obj{
面积
},i)=>{
obj[areaId]=i;
返回obj;
}, {})
park_list.sort((a,b)=>区域列表索引[a.area_id]-区域列表索引[b.area_id])
控制台日志(驻车列表)代码>您可以为想要的顺序取一个,并按同一键的索引排序
var park_list=[{parkName:“park4”,area_id:“4”},{parkName:“park2”,area_id:“2”},{parkName:“park1”,area_id:“1”},{parkName:“park3”,area_id:“3”},
area_list=[{cityId:“1”,areaId:“2”,areaName:“2”},{cityId:“1”,areaId:“4”,areaName:“area4”},{cityId:“1”,areaId:“1”},{cityId:“3”,areaName:“area1”},
顺序=新地图(area_list.Map({areaId},i)=>[areaId,i]);
park_list.sort({area_id:a},{area_id:b})=>order.get(a)-order.get(b));
控制台日志(驻车列表)代码>
作为控制台包装{max height:100%!important;top:0;}
您想要什么样的解决方案(您添加了angular和ionic3作为标记)?。此外,您是否对列表结构或格式有任何控制权?