Javascript 通过方法对数组中的对象进行排序

Javascript 通过方法对数组中的对象进行排序,javascript,arrays,sorting,object,methods,Javascript,Arrays,Sorting,Object,Methods,此函数用于对数组进行排序。首先,应该显示国家与第二个参数中指定的国家相等的对象。然后是所有其他的。但我不明白是什么错了 常数arr=[ { “名称”:“宝马”, “价格”:“55000”, “国家”:“德国”, “证书”:“是” }, { “名称”:“三菱”, “价格”:“93000”, “构造函数”:“Bar John”, “门”:“3”, “国家”:“日本”, }, { “名称”:“梅赛德斯-奔驰”, “价格”:“63000”, “国家”:“德国”, “证书”:“是” },

此函数用于对数组进行排序。首先,应该显示国家与第二个参数中指定的国家相等的对象。然后是所有其他的。但我不明白是什么错了


常数arr=[
{  
“名称”:“宝马”,
“价格”:“55000”,
“国家”:“德国”,
“证书”:“是”
},
{  
“名称”:“三菱”,
“价格”:“93000”,
“构造函数”:“Bar John”,
“门”:“3”,
“国家”:“日本”,
},
{  
“名称”:“梅赛德斯-奔驰”,
“价格”:“63000”,
“国家”:“德国”,
“证书”:“是”
},
{  
“名称”:“丰田”,
“价格”:“48000”,
“max_people”:“7”,
“国家”:“日本”,
“证书”:“是”
},
{  
“名称”:“大众”,
“价格”:“36000”,
“建造商”:“太阳码头”,
“国家”:“德国”,
“证书”:“否”
},
];
职能国家(arr,国家){
设一=arr.sort(函数(项){
返回国家>item.country;
});
返回一个;
}

console.log(国家/地区(arr,“日本”)您需要将两个对象与所需国家/地区进行比较,并将此项目移至顶部

改变数组的顺序

功能国家/地区(阵列、国家/地区){
返回array.sort({country:a},{country:b})=>(b==country)-(a==country));
}
const数组=[{名称:“宝马”,价格:“55000”,国家:“德国”,证书:“是”},{名称:“三菱”,价格:“93000”,建造商:“酒吧约翰”,门:“3”,国家:“日本”},{名称:“梅赛德斯-奔驰”,价格:“63000”,国家:“德国”,证书:“是”},{名称:“丰田”,价格:“48000”,马克斯人:“7”,国家:“日本”证书:“是”},{名称:“大众”,价格:“36000”,建造商:“Pier Sun”,国家:“德国”,证书:“否”});
console.log(国家(数组,“日本”)

.as控制台包装{max height:100%!important;top:0;}
确保
sort
的回调包含两个参数,并稍微更改排序逻辑:


常数arr=[
{  
“名称”:“宝马”,
“价格”:“55000”,
“国家”:“德国”,
“证书”:“是”
},
{  
“名称”:“三菱”,
“价格”:“93000”,
“构造函数”:“Bar John”,
“门”:“3”,
“国家”:“日本”,
},
{  
“名称”:“梅赛德斯-奔驰”,
“价格”:“63000”,
“国家”:“德国”,
“证书”:“是”
},
{  
“名称”:“丰田”,
“价格”:“48000”,
“max_people”:“7”,
“国家”:“日本”,
“证书”:“是”
},
{  
“名称”:“大众”,
“价格”:“36000”,
“建造商”:“太阳码头”,
“国家”:“德国”,
“证书”:“否”
},
];
职能国家(arr,国家){
设一=arr.sort(函数(a,b){
返回a==国家?-1:b==国家1:0;
});
返回一个;
}

console.log(国家/地区(arr,“日本”)
数组.sort中的比较函数应返回:

  • 值>0表示a>b
  • 值<0表示a
  • 值==0表示a==b
因此,最简单的方法是将其更改为:

let one = arr.sort(function(item) {
    return (country > item.country) ? 1 : -1
});

谢谢你的回答!我也有同样的问题。为了与IE兼容,我将您的代码改编为:
returnarray.sort(函数(a,b){return(b.country==country)-(a.country==country));