Sorting an array of objects by property values

If you have an array of objects in JavaScript and you want to sort them based on a specific property value, there are a few different ways to accomplish this. In this article, we will explore how to sort an array of objects by the "price" property in either ascending or descending order.

Method 1: Using the Array sort() method

The most straightforward way to sort an array of objects by a specific property value is to use the built-in sort() method of the Array object. The sort() method sorts the elements of an array in place and returns the sorted array. By providing a comparison function as an argument to the sort() method, we can control the sorting order based on the property value.


            var homes = [
                {
                    "h_id": "3",
                    "city": "Dallas",
                    "state": "TX",
                    "zip": "75201",
                    "price": "162500"
                }, {
                    "h_id": "4",
                    "city": "Bevery Hills",
                    "state": "CA",
                    "zip": "90210",
                    "price": "319250"
                }, {
                    "h_id": "5",
                    "city": "New York",
                    "state": "NY",
                    "zip": "00010",
                    "price": "962500"
                }
            ];
            
            // Sort the objects in ascending order based on the "price" property
            homes.sort(function(a, b) {
                return a.price - b.price;
            });
            
            // Sort the objects in descending order based on the "price" property
            homes.sort(function(a, b) {
                return b.price - a.price;
            });
        

In the above example, we have an array of home objects, each with a "price" property. To sort the objects in ascending order based on the "price" property, we use the first sort() method with a comparison function that subtracts b's price from a's price. This will arrange the objects in increasing order of price. To sort the objects in descending order, we simply reverse the order of subtraction in the comparison function.

Method 2: Using the Array sort() method with localeCompare()

Another approach to sorting an array of objects based on a specific property value is to use the sort() method in combination with the localeCompare() method. The localeCompare() method compares two strings and returns -1, 0, or 1 depending on the comparison result. By providing a custom comparison function to the sort() method, we can use localeCompare() to compare the property values.


            var homes = [
                {
                    "h_id": "3",
                    "city": "Dallas",
                    "state": "TX",
                    "zip": "75201",
                    "price": "162500"
                }, {
                    "h_id": "4",
                    "city": "Bevery Hills",
                    "state": "CA",
                    "zip": "90210",
                    "price": "319250"
                }, {
                    "h_id": "5",
                    "city": "New York",
                    "state": "NY",
                    "zip": "00010",
                    "price": "962500"
                }
            ];
            
            // Sort the objects in ascending order based on the "price" property
            homes.sort(function(a, b) {
                return a.price.localeCompare(b.price);
            });
            
            // Sort the objects in descending order based on the "price" property
            homes.sort(function(a, b) {
                return b.price.localeCompare(a.price);
            });
        

In the above example, we again have an array of home objects with a "price" property. By using the localeCompare() method within the comparison function, we can compare the property values and sort them accordingly. The localeCompare() method takes into account the current locale settings, making it useful for sorting strings with non-ASCII characters or in different languages.

Method 3: Using the lodash library

If you prefer a more convenient and feature-rich solution, you can make use of the popular lodash library, which provides a sortBy() function specifically designed for sorting arrays of JavaScript objects based on property values.


            var homes = [
                {
                    "h_id": "3",
                    "city": "Dallas",
                    "state": "TX",
                    "zip": "75201",
                    "price": "162500"
                }, {
                    "h_id": "4",
                    "city": "Bevery Hills",
                    "state": "CA",
                    "zip": "90210",
                    "price": "319250"
                }, {
                    "h_id": "5",
                    "city": "New York",
                    "state": "NY",
                    "zip": "00010",
                    "price": "962500"
                }
            ];
            
            // Sort the objects in ascending order based on the "price" property
            homes = _.sortBy(homes, 'price');
            
            // Sort the objects in descending order based on the "price" property
            homes = _.sortBy(homes, 'price').reverse();
        

In this example, we include the lodash library and make use of its sortBy() function to sort the array of home objects based on the "price" property. The sortBy() function returns a new sorted array, allowing us to assign it back to the original homes variable. By passing the property name as the second argument to sortBy(), we can sort the objects in either ascending or descending order.

Conclusion

Sorting an array of objects based on a specific property value is a common task in JavaScript development. By using the Array sort() method with a custom comparison function or utilizing libraries like lodash, we can easily achieve this functionality. Whether you prefer the simplicity of pure JavaScript or the convenience of a library, these methods will allow you to sort your array of objects according to your desired property value.