简体   繁体   English

排序 javascript object 而不更改它的键值

[英]Sort javascript object without changes it's key value

I have below type of object, I want to sort on based on sort_value of object.我有以下类型的 object,我想根据 object 的 sort_value 进行排序。 I tried below solution but it gives me error.我尝试了以下解决方案,但它给了我错误。

var data = {
        7:{
            name: 'Test1',
            city: 'Mohali',
            sort_order: -1
        },
        9:{
            name: 'Test2',
            city: 'Delhi',
            sort_order: 2
        },
        10:{
            name: 'Test3',
            city: 'Chicago',
            sort_order: 0
        }
    }

I Tried this one solution我试过这个解决方案

data.sort(function(a, b) {
    return parseFloat(a.sort_order) - parseFloat(b.sort_order);
});

Gives me error like this给我这样的错误

Uncaught TypeError: data.sort is not a function

Expected Output预计 Output

var Expectedop = {
        7:{
            name: 'Test1',
            city: 'Mohali',
            sort_order: -1
        },
        10:{
            name: 'Test3',
            city: 'Chicago',
            sort_order: 0
        },
        9:{
            name: 'Test2',
            city: 'Delhi',
            sort_order: 2
        }
    }

sort is an in-built method available on Arrays. sort是 Arrays 上可用的内置方法。

What you can do is use Object.keys(data) which will give you array of keys ( [7,9,10] ) and sort it using the sort function.您可以做的是使用Object.keys(data)它将为您提供键数组( [7,9,10] )并使用sort function 对其进行排序。 When you have the keys sorted in the array, you can use them to update sort_order in the data object.在数组中对键进行排序后,可以使用它们更新data object 中的sort_order

Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM