JavaScriptで配列がオブジェクトの場合、Sort()で並び替えても予測した結果にならない場合があります。下記のようなオブジェクトが配列になった変数をSort()したい場合、オブジェクト内のどのエレメントをSort対象とするのかを指定する必要があります。

let x = [{name: "ココナ"},{name: "Votoms"},{name: "ゴウト"},{name: "キリコ"},{name: "バニラ"},{name: "フィアナ"}]

この変数xの配列内オブジェクトのnameというエレメントをSort対象とした場合のコード例です。

x.sort((a, b) =>{
    return (a.name <= b.name)? -1 : 1
})

上記のように記述すればnameというエレメントでSortできます。結果は下のようになります。

JavaScript オブジェクト配列並び替え

さらにSortされたあとにidというエレメントを追加して番号をふる場合のコード例です。

let x = [{name: "ココナ"},{name: "Votoms"},{name: "ゴウト"},{name: "キリコ"},{name: "バニラ"},{name: "フィアナ"}]
x.sort((a, b) =>{
    return (a.name <= b.name)? -1 : 1
}).forEach((aValue,index1,_my) => {
    let newKey = `id`
    aValue[newKey ] = index1
})

 

上のコードを実行すると結果です。

JavaScript オブジェクト配列並び替えて要素追加する