Sort array of objects by string property value

If you have an array of JavaScript objects and you want to sort them by a specific property value, you can use the sort() method combined with a custom sorting function.

Sorting an Array of Objects by String Property Value

To sort an array of objects by the value of a string property, you can define a sorting function that compares the two objects based on their respective property values. Here's an example:


            var objs = [
                { first_nom: 'Laszlo', last_nom: 'Jamf'     },
                { first_nom: 'Pig',    last_nom: 'Bodine'   },
                { first_nom: 'Pirate', last_nom: 'Prentice' }
            ];

            objs.sort(function(a, b) {
                var nameA = a.last_nom.toUpperCase(); // convert to uppercase for case-insensitive sorting
                var nameB = b.last_nom.toUpperCase(); // convert to uppercase for case-insensitive sorting
                if (nameA < nameB) {
                    return -1;
                }
                if (nameA > nameB) {
                    return 1;
                }
                return 0; // names must be equal
            });
        

In this example, the sort() method is called on the objs array. The sorting function takes two parameters (a and b) representing two objects from the array that need to be compared. The function compares the value of the last_nom property of each object, converting the values to uppercase for case-insensitive sorting. The function returns a negative value if a should come before b in the sorted array, a positive value if b should come before a, or 0 if the two values are equal.

By calling the sort() method on the array and passing the custom sorting function as an argument, the array will be sorted based on the values of the last_nom property in ascending order.

Sorting an Array of Objects by Numeric Property Value

If you have an array of objects and you want to sort them by a numeric property value, you can modify the custom sorting function accordingly. Here's an example:


            var objs = [
                { first_nom: 'Laszlo', age: 40 },
                { first_nom: 'Pig',    age: 25 },
                { first_nom: 'Pirate', age: 50 }
            ];

            objs.sort(function(a, b) {
                return a.age - b.age;
            });
        

In this example, the custom sorting function compares the age property values of each object. By subtracting a.age from b.age, the function will return a negative value if a should come before b in the sorted array, a positive value if b should come before a, or 0 if the two values are equal.

Sorting an Array of Objects by Date Property Value

If you have an array of objects and you want to sort them by a date property value, you can modify the custom sorting function to handle date comparisons. Here's an example:


            var objs = [
                { first_nom: 'Laszlo', birthdate: new Date('1980-01-01') },
                { first_nom: 'Pig',    birthdate: new Date('1995-07-12') },
                { first_nom: 'Pirate', birthdate: new Date('1975-03-20') }
            ];

            objs.sort(function(a, b) {
                return a.birthdate - b.birthdate;
            });
        

In this example, the custom sorting function compares the birthdate property values of the objects using the subtraction operator. Sorting by dates is straightforward in JavaScript because the Date objects have built-in comparison functionality. The function will return a negative value if a should come before b in the sorted array, a positive value if b should come before a, or 0 if the two dates are equal.

Handling Null or Undefined Property Values

If your array of objects contains null or undefined property values, you can add additional checks to handle these cases in your custom sorting function. Here's an example:


            var objs = [
                { first_nom: 'Laszlo', last_nom: 'Jamf'     },
                { first_nom: 'Pig',    last_nom: null        },
                { first_nom: 'Pirate', last_nom: undefined   }
            ];

            objs.sort(function(a, b) {
                var nameA = a.last_nom ? a.last_nom.toUpperCase() : '';
                var nameB = b.last_nom ? b.last_nom.toUpperCase() : '';
                if (nameA < nameB) {
                    return -1;
                }
                if (nameA > nameB) {
                    return 1;
                }
                return 0;
            });
        

In this example, the sorting function checks if the last_nom property of each object is null or undefined before converting it to uppercase and performing the comparison. If the property is null or undefined, an empty string is used for comparison.

Conclusion

By using the sort() method and a custom sorting function, you can easily sort an array of objects by a specific property value in JavaScript. Whether you're sorting by string, numeric, or date values, the same general approach can be applied.