配列内のオブジェクトを配列の1つのプロパティに基づいてアルファベット順に並べ替える [重複] 質問する

配列内のオブジェクトを配列の1つのプロパティに基づいてアルファベット順に並べ替える [重複] 質問する

次のような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"]

しかし、オブジェクトのリストでこれを機能させるにはどうすればよいでしょうか?

ベストアンサー1

次のようなことをする必要があります:

objArray.sort(function(a, b) {
    var textA = a.DepartmentName.toUpperCase();
    var textB = b.DepartmentName.toUpperCase();
    return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});

注: 大文字と小文字を変更すると、大文字と小文字を区別しない並べ替えが行われます。

おすすめ記事