

JavaScriptのオブジェクトのソートで反転させることができずにおります。詳しい方いましたらご教授お願いします。  
以下のようなオブジェクトが返ってくる関数がありまして、これらを反転させて降順にしたいと思っております。

新しく追加されたデータは下に追加されてゆく感じになっているのですが、実際にsortをしようと思うと日付などのデータがなく新しい順にならないのと、reverse()などの関数は配列に対してのみ有効らしくオブジェクトには適用できませんでした。  
こちらどのようにreverseすることができるでしょうか？

**対象のオブジェクト:**

[code]

    {
        "0bf10e9f392d20bc5296df07c0087af8": {
            "discount": "0",
            "id": "xxxxx",
            "name": "nnnnn",
            "options": "",
            "price": "100",
            "qty": "2",
            "rowId": "0bf10e9f392d20bc5296df07c0087af8",
            "subtotal": "100",
            "tax": "0"
        },
        "0bf10e9f392d20b45464566df07c0087": {
            "discount": "0",
            "id": "xxxxx",
            "name": "nnnnn",
            "options": "",
            "price": "100",
            "qty": "2",
            "rowId": "0bf10e9f392d20b45464566df07c0087",
            "subtotal": "100",
            "tax": "0"
        },
        ....
    }
    
[/code]


CC BY-SA 4.0
2022-10-01T00:44:35.413
91388
2022-10-01T11:22:01.243
2022-10-01T11:22:01.243
3060
34391
question
javascript array
JavaScriptのオブジェクトを逆順にソートしたい


旧来、オブジェクトに順序はありませんでした。最近になって仕様に追加されていますが、あまり使い易い性質のものではありません。基本的にはオブジェクトの順序を利用するコードは書かない方が良いと思います。

* * *

それでも行なう場合。

まず、[`Object.keys()`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)
などでキー（プロパティ名）の配列を取得し、それを反転させます。その結果の順に、オブジェクトに挿入します。

**注: 数値として解釈できるプロパティ名は挿入順になりませんので、どうしようも無いです。**

[code]

    for (const key of Object.keys(origObj).reverse()) {
        newObj[key] = origObj[key]
    }
    
[/code]

対象のオブジェクトを直接変更する場合は、一度 `delete` で消した後に挿入し直します。ただし、IE では[`delete`
した際の挙動が他と違う](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/delete#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7%E3%81%AE%E6%B3%A8%E6%84%8F)ようなので、これは出来ないはずです。

[code]

    for (const key of Object.keys(obj).reverse()) {
        const val = obj[key]
        delete obj[key]
        obj[key] = val
    }
    
[/code]


CC BY-SA 4.0
2022-10-01T02:51:44.030
91389
2022-10-01T04:24:24.533
2022-10-01T04:24:24.533
3054
3054
91388
answer