Javascript 基于关键字在对象数组上循环

Javascript 基于关键字在对象数组上循环,javascript,arrays,loops,sorting,object,Javascript,Arrays,Loops,Sorting,Object,按特定顺序对对象数组进行排序 var details = [{ "name": "john", "place":"new york" },{ "name": "mark", "place":"chicago" },{ "name": "tom", "place":"san jose" },{ "name": "dansk", "place":"new jersey" }], 地图应按以下顺序显示列表,基本上我们需要确定输出模式,我们应该能够更改顺序: san jose, new york, c

按特定顺序对对象数组进行排序

var details = [{
"name": "john",
"place":"new york"
},{
"name": "mark",
"place":"chicago"
},{
"name": "tom",
"place":"san jose"
},{
"name": "dansk",
"place":"new jersey"
}],
地图应按以下顺序显示列表,基本上我们需要确定输出模式,我们应该能够更改顺序:

san jose,
new york,
chicago,
new jersey
我试过这个:

details.sort((a, b)=> a.place - b.place)).map((data) => {
return(
 <div>
   <li>{data.place}</li>
 </div>
)})
details.sort((a,b)=>a.place-b.place)).map((数据)=>{
返回(
  • {data.place}
  • )})
    对于基于其他数组的排序数组,可以使用此代码

    var详细信息=[{
    “姓名”:“约翰”,
    “地点”:“纽约”
    }, {
    “名称”:“标记”,
    “地点”:“芝加哥”
    }, {
    “姓名”:“汤姆”,
    “地点”:“圣何塞”
    }, {
    “名称”:“丹麦”,
    “地点”:“新泽西”
    }];
    var sortingArray=[“圣何塞”、“纽约”、“芝加哥”、“新泽西”];
    var结果=[];
    sortingArray.forEach(函数(键){
    var=false;
    详细信息=详细信息。过滤器(功能(项目){
    如果(!found&&item.place==key){
    结果:推送(项目);
    发现=真;
    返回false;
    }否则
    返回true;
    })
    })
    
    控制台日志(结果)我看不到这些项目的排序顺序有任何逻辑,因此我将使用一个定义排序顺序的列表

    let order=[“圣何塞”、“纽约”、“芝加哥”、“新泽西”];
    变量详细信息=[{
    “姓名”:“约翰”,
    “地点”:“纽约”
    },
    {
    “名称”:“标记”,
    “地点”:“芝加哥”
    },
    {
    “姓名”:“汤姆”,
    “地点”:“圣何塞”
    },
    {
    “名称”:“丹麦”,
    “地点”:“新泽西”
    }]
    .sort((a,b)=>order.indexOf(a.place)-order.indexOf(b.place));
    
    控制台日志(详细信息)您希望
    “字符串”-“字符串”
    的结果是什么尝试使用字符串
    localeCompare
    method这没有任何意义。在这种情况下,你能指出一条比较两个字符串的规则吗?在不知道约束条件的情况下编写程序是不可能的。这将按字母顺序给出,但我们需要按提到的顺序,如圣何塞、纽约、芝加哥、新泽西什么样的顺序?这是另一个类似于[“圣何塞”、“纽约”、“芝加哥”、“新泽西州”]的顺序数组吗?@Mark我已经更新了我的代码。请勾选。@Mark如果答案有用,请把这个答案标记为正确。