


How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?
Oct 28, 2024 pm 04:10 PMFiltering Arrays based on Nested Objects
In JavaScript, you may encounter scenarios where you need to filter an array of objects based on the values of nested properties. To achieve this, you can leverage powerful filtering techniques.
Consider the example provided in your question, where the goal is to filter an array of elements based on a specific surname value within their nested "subElements" array. The input array is defined as follows:
<code class="js">let arrayOfElements = [ { "name": "a", "subElements": [ {"surname": 1}, {"surname": 2} ] }, { "name": "b", "subElements": [ {"surname": 3}, {"surname": 1} ] }, { "name": "c", "subElements": [ {"surname": 2}, {"surname": 5} ] } ];</code>
To filter this array and retrieve only the elements whose "subElements" array contains an object with "surname" set to 1, you can use a combination of the "filter" and "some" methods:
<code class="js">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>
However, the issue with this approach is that it returns objects with all their "subElements", including those that don't match the filter criteria. To resolve this, you can employ the "map" function along with the spread operator:
<code class="js">filteredArray = arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })</code>
Here, the spread operator (i.e., "...element") is used to create a new object based on the original "element" while overriding its "subElements" property with the filtered result. This approach allows you to filter out unwanted "subElements" while preserving the structure of the original array. The resulting "filteredArray" will contain the desired objects with their "subElements" filtered based on the "surname" criterion:
<code class="js">[ { "name": "a", "subElements": [ {"surname": 1} ] }, { "name": "b", "subElements": [ {"surname": 1} ] } ]</code>
The above is the detailed content of How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial

8 Stunning jQuery Page Layout Plugins

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development
