Javascript 如何使用另一个json的顺序对json对象进行排序

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"

我有一个公园列表(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"
    },
    {
        "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作为标记)?。此外,您是否对列表结构或格式有任何控制权?