Home > database >  Search for ID Key Value in Json Array and add Key with Values to Object array
Search for ID Key Value in Json Array and add Key with Values to Object array

Time:04-18

I have Json array with two objects, in Json Array with two objects i have array with multiple objects in attachments.vaAttachments.

filename ist unique:

How can I search for specific values (attachments.vaAttachments.filename === 123456.pdf) if true add Key to object (name of key fileBase64) and value is "sahduidBASE64CODEsahuidhsauipdhasuiphd"

This is what i have now:

[{
"im": {
    "materialNumber": "A0009",
    "countryKey": "DE",
    "createdDate": "2022-03-09"
},
"attachments": {
    "vaAttachments": [
        {
            "filename": "123456.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z",

        },
        {
            "filename": "987654.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        }
    ]
}
},
{
"im": {
    "materialNumber": "A0010",
    "countryKey": "DE",
    "createdDate": "2022-03-09"
},
"attachments": {
    "vaAttachments": [
        {
            "filename": "656565.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        },
        {
            "filename": "753357.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        }
    ]
}
}]

This is what i would like to have:

[{
"im": {
    "materialNumber": "A0009",
    "countryKey": "DE",
    "createdDate": "2022-03-09"
},
"attachments": {
    "vaAttachments": [
        {
            "filename": "123456.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
            "fileBase64": "sahduidBASE64CODEsahuidhsauipdhasuiphd" 
        },
        {
            "filename": "987654.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        }
    ]
}
},
{
"im": {
    "materialNumber": "A0010",
    "countryKey": "DE",
    "createdDate": "2022-03-09"
},
"attachments": {
    "vaAttachments": [
        {
            "filename": "656565.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        },
        {
            "filename": "753357.pdf",
            "originalFilename": "Sample.pdf",
            "createdAt": "2022-03-09T14:50:55.325Z"
        }
    ]
}
}]

CodePudding user response:

You can use array.forEach for the same, you can read about it in this link

Also here you can use this function for the same:

const searchFunction = (arr, key) => {
  arr.forEach((element) => {
    const {
      attachments: { vaAttachments = [] }
    } = element
    vaAttachments.forEach((item) => {
      const { filename = '' } = item
      if (filename === key) {
        item.fileBase64 = 'sahduidBASE64CODEsahuidhsauipdhasuiphd'
      }
    })
  })
}

searchFunction(jsonArray, '123456.pdf')
console.log('jsonArray:', JSON.stringify(jsonArray))

Try and running it yourself:

const jsonArray = [
  {
    im: {
      materialNumber: 'A0009',
      countryKey: 'DE',
      createdDate: '2022-03-09'
    },
    attachments: {
      vaAttachments: [
        {
          filename: '123456.pdf',
          originalFilename: 'Sample.pdf',
          createdAt: '2022-03-09T14:50:55.325Z'
        },
        {
          filename: '987654.pdf',
          originalFilename: 'Sample.pdf',
          createdAt: '2022-03-09T14:50:55.325Z'
        }
      ]
    }
  },
  {
    im: {
      materialNumber: 'A0010',
      countryKey: 'DE',
      createdDate: '2022-03-09'
    },
    attachments: {
      vaAttachments: [
        {
          filename: '656565.pdf',
          originalFilename: 'Sample.pdf',
          createdAt: '2022-03-09T14:50:55.325Z'
        },
        {
          filename: '753357.pdf',
          originalFilename: 'Sample.pdf',
          createdAt: '2022-03-09T14:50:55.325Z'
        }
      ]
    }
  }
]

const searchFunction = (arr, key) => {
  arr.forEach((element) => {
    const {
      attachments: { vaAttachments = [] }
    } = element
    vaAttachments.forEach((item) => {
      const { filename = '' } = item
      if (filename === key) {
        item.fileBase64 = 'sahduidBASE64CODEsahuidhsauipdhasuiphd'
      }
    })
  })
}

searchFunction(jsonArray, '123456.pdf')
console.log('jsonArray:', jsonArray)

  • Related