
- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing
- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM
- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers
- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources
How to sort an array of objects based on the length of a nested array in JavaScript
Suppose, we have an array of objects that contains nested array of objects like this −
const arr = [ { name: "Cat1", elements : [ { name: name, id: id } ] }, { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] } ];
We are required to write a JavaScript function that takes in one such array. The function should sort this array of objects.
The objects that contains more number of objects in the "elements" array property should rank higher.
Therefore, after sorting the array should look like this −
const output = [ { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat1", elements : [ { name: name, id: id } ] } ];
Example
The code for this will be −
const arr = [ { "name": "Cat1", elements : [ { "name": "name", "id": "id" } ] }, { "name": "Cat2", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] } ]; const sorter = (a, b) => { if(a.elements.length > b.elements.length) { return −1; } else { return 1; } } arr.sort(sorter); console.log(JSON.stringify(arr, undefined, 4));
Output
And the output in the console will be −
[ { name": "Cat2", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat1", "elements": [ { "name": "name", "id": "id" } ] } ]
- Related Articles
- Sort array based on presence of fields in objects JavaScript
- Creating an array of objects based on another array of objects JavaScript
- Filter an array containing objects based on another array containing objects in JavaScript
- Sort array based on another array in JavaScript
- Sort object array based on another array of keys - JavaScript
- How to convert nested array pairs to objects in an array in JavaScript ?
- JavaScript - How to create nested unordered list based on nesting of array?
- JavaScript - length of array objects
- Sort an array of objects by multiple properties in JavaScript
- Update an array of strings nested within an array of objects in MongoDB
- Sort nested array containing objects ascending and descending according to date in JavaScript
- JavaScript Bubble sort for objects in an array
- Group objects inside the nested array JavaScript
- Order an array of words based on another array of words JavaScript
- Modify an array based on another array JavaScript

Advertisements