Javascript 如何基于重复值angularjs对数组进行排序
我有以下数据Javascript 如何基于重复值angularjs对数组进行排序,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我有以下数据 var data = [ { "h_id" : "31", "city": "hill", }, { "h_id": "4", "city": "Bevery Hills", }, { "h_id": "5", "city": "New York", }, { "h_id": "31", "city": "New York", }, { "h_id": "5",
var data = [
{
"h_id" : "31",
"city": "hill",
}, {
"h_id": "4",
"city": "Bevery Hills",
}, {
"h_id": "5",
"city": "New York",
}, {
"h_id": "31",
"city": "New York",
}, {
"h_id": "5",
"city": "New York",
}
];
我希望数据按“id”顺序排序,如下所示
var data = [
{
"h_id" : "31",
"city": "hill",
}, {
"h_id": "31",
"city": "Bevery Hills",
}, {
"h_id": "4",
"city": "New York",
}, {
"h_id": "5",
"city": "New York",
}, {
"h_id": "5",
"city": "New York",
}
];
我如何创建一个函数来根据上面的场景过滤id值呢?您只需要在数组上用一个比较器函数调用
.sort
方法
var数据=[{
“h_id”:“31”,
“城市”:“小山”,
}, {
“h_id”:“4”,
“城市”:“贝弗里山”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}, {
“h_id”:“31”,
“城市”:“纽约”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}];
var sortedData=data.sort((a,b)=>b.h_id-a.h_id);
控制台日志(sortedData)代码>您可以将自定义函数传递给JavaScript的方法:
var数据=[{
“h_id”:“31”,
“城市”:“小山”,
}, {
“h_id”:“4”,
“城市”:“贝弗里山”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}, {
“h_id”:“31”,
“城市”:“纽约”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}];
var result=data.sort(函数(a,b){
返回a.h_id.localeCompare(b.h_id);
});
控制台日志(结果)
方法对数组中的元素进行适当排序并返回数组。阅读更多关于它的信息
这就是你完成任务的方法
var数据=[
{
“h_id”:“31”,
“城市”:“小山”,
}, {
“h_id”:“4”,
“城市”:“贝弗里山”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}, {
“h_id”:“31”,
“城市”:“纽约”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}
];
数据排序(函数(a,b){
返回parseInt(b.h_id)-parseInt(a.h_id);
});
console.log(data)
您希望按字符串(而不是数字)排序,因此根据您的操作应执行以下操作:
var数据=[
{
“h_id”:“31”,
“城市”:“小山”,
}, {
“h_id”:“4”,
“城市”:“贝弗里山”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}, {
“h_id”:“31”,
“城市”:“纽约”,
}, {
“h_id”:“5”,
“城市”:“纽约”,
}
];
数据排序(函数(a,b){
if(a.h_idb.h_id){
返回1;
}
返回0;
});
控制台日志(数据)代码>它既不是升序,也不是降序。你的确切要求是什么?我认为这不是一个有效的模式。如果要排序,排序“h_id”将类似于:31,31,5,5,4。我不认为在适当的地方分组是有意义的。您不能按此模式进行排序。如果有3条记录h_id=5
,那么输出应该是什么?不需要parseInt
,他会将这些数字按字母顺序作为字符串进行排序。例如,“4”之前的“31”在“5”之前的“31”我想OP不知道他想要什么排序,更不用说按字符串或整数排序了(你可以想象将这些数字按字符分割,并将它们视为区域:3.1
4
5
)@AlekseySolovey——谢谢你指出这一点。更新代码!我想过滤像31,31,4,5,5这样的id,而不是像acednding或decenting一样,我想过滤像如果第一个id是31,我想在下一个对象中过滤31中的所有数据,那么下一个id 4意味着我想在4中的所有数据继续“4”应该在“5”之前这是一个错误的答案,因为您正在比较数字。我想筛选id,如31,31,4,5,5,而不是像acednding或decenting,我想筛选,如果第一个id是31,我希望所有数据都在31中,然后下一个id 4意味着我希望所有数据都在4中继续