Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use array .filter() to search key value in JSON array of objects

If I have an array of objects like so in playlists.json

"playlists" : [
      {
        "id" : "1",
        "owner_id" : "2",
        "song_ids" : [
          "8",
          "32"
        ]
      },
      {
        "id" : "2",
        "owner_id" : "3",
        "song_ids" : [
          "6",
          "8",
          "11"
        ]
      },
      {
        "id" : "3",
        "owner_id" : "7",
        "song_ids" : [
          "7",
          "12",
          "13",
          "16",
          "2"
        ]
      }
    ]

and in Node I read in the file like this:

const data = JSON.parse(fs.readFileSync('playlists.json'));

I want to write a .filter() function that can search by id and mutate the result into a new array thereby removing the entry tested for.

Of course we can access the index like this: playlists[0].id);

How would write the .filter() to test for a certain id i.e. generate a new array with value removed? (mutate) I wrote some code below but it is wrong and noob.

const someId = "2"
const result = playlists.filter(playlist => playlist.id !== someId)

New array of result would contain:

"playlists" : [
      {
        "id" : "1",
        "owner_id" : "2",
        "song_ids" : [
          "8",
          "32"
        ]
      },
      {
        "id" : "3",
        "owner_id" : "7",
        "song_ids" : [
          "7",
          "12",
          "13",
          "16",
          "2"
        ]
      }
    ]
like image 724
Rachel Avatar asked Oct 17 '25 06:10

Rachel


1 Answers

You used filter fine, however, you have select the key from your json object. Below is an example.

 const jsonFile = {
        "playlists" : [
              {
                "id" : "1",
                "owner_id" : "2",
                "song_ids" : [
                  "8",
                  "32"
                ]
              },
              {
                "id" : "2",
                "owner_id" : "3",
                "song_ids" : [
                  "6",
                  "8",
                  "11"
                ]
              },
              {
                "id" : "3",
                "owner_id" : "7",
                "song_ids" : [
                  "7",
                  "12",
                  "13",
                  "16",
                  "2"
                ]
              }
            ]
        }
        const someId = 2
        const result = jsonFile.playlists.filter(playlist => playlist.id !== someId)
        console.log(result)
like image 136
Arky Asmal Avatar answered Oct 19 '25 20:10

Arky Asmal



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!