假设您有一个JavaScript类,如下所示
var DepartmentFactory = function(data) {
this.id = data.Id;
this.name = data.DepartmentName;
this.active = data.Active;
}
假设您随后创建了该类的许多实例,并将它们存储在一个数组中
var objArray = [];
objArray.push(DepartmentFactory({Id: 1, DepartmentName: 'Marketing', Active: true}));
objArray.push(DepartmentFactory({Id: 2, DepartmentName: 'Sales', Active: true}));
objArray.push(DepartmentFactory({Id: 3, DepartmentName: 'Development', Active: true}));
objArray.push(DepartmentFactory({Id: 4, DepartmentName: 'Accounting', Active: true}));
所以我现在有了一个由DepartmentFactory
创建的对象数组。如何使用array.sort()
方法按照每个对象的DepartmentName
属性对这个对象数组进行排序?
对字符串数组进行排序时,array.sort()
方法工作得很好
var myarray=["Bob", "Bully", "Amy"];
myarray.sort(); //Array now becomes ["Amy", "Bob", "Bully"]
但是我如何让它与对象列表一起工作呢?
发布于 2012-01-18 03:52:49
你必须这样做:
objArray.sort(function(a, b) {
var textA = a.DepartmentName.toUpperCase();
var textB = b.DepartmentName.toUpperCase();
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});
注意:更改大小写(大写或小写)可确保排序不区分大小写。
发布于 2012-01-18 04:02:07
支持unicode的步骤:
objArray.sort(function(a, b) {
return a.DepartmentName.localeCompare(b.DepartmentName);
});
发布于 2020-08-21 22:42:57
使用ES6缩短代码
objArray.sort((a, b) => a.DepartmentName.toLowerCase().localeCompare(b.DepartmentName.toLowerCase()))
https://stackoverflow.com/questions/8900732
复制相似问题