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如果答案有用,请把这个答案标记为正确。