Home Web Front-end JS Tutorial How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?

How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?

Oct 28, 2024 pm 04:10 PM

How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?

Filtering 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>
Copy after login

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) =&gt; element.subElements.some((subElement) =&gt; subElement.surname === 1));</code>
Copy after login

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) =&gt; {
  return {...element, subElements: element.subElements.filter((subElement) =&gt; subElement.surname === 1)}
})</code>
Copy after login

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>
Copy after login

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Replace String Characters in JavaScript Replace String Characters in JavaScript Mar 11, 2025 am 12:07 AM

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial Custom Google Search API Setup Tutorial Mar 04, 2025 am 01:06 AM

Custom Google Search API Setup Tutorial

Example Colors JSON File Example Colors JSON File Mar 03, 2025 am 12:35 AM

Example Colors JSON File

Build Your Own AJAX Web Applications Build Your Own AJAX Web Applications Mar 09, 2025 am 12:11 AM

Build Your Own AJAX Web Applications

8 Stunning jQuery Page Layout Plugins 8 Stunning jQuery Page Layout Plugins Mar 06, 2025 am 12:48 AM

8 Stunning jQuery Page Layout Plugins

What is 'this' in JavaScript? What is 'this' in JavaScript? Mar 04, 2025 am 01:15 AM

What is 'this' in JavaScript?

Improve Your jQuery Knowledge with the Source Viewer Improve Your jQuery Knowledge with the Source Viewer Mar 05, 2025 am 12:54 AM

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development 10 Mobile Cheat Sheets for Mobile Development Mar 05, 2025 am 12:43 AM

10 Mobile Cheat Sheets for Mobile Development

See all articles