Home > Software design >  Remove attribute in object propertie inside array
Remove attribute in object propertie inside array

Time:03-21

i have a doubt that i can not resolve.

I have this data, that i received:

const groupedElements = [
      {
        _id: 'OVTBLNCDYBHP3IKUFQLGQF6AC4',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: '<strong>A 24 horas de que tenga lugar la boda entre el jugador del FC Barcelona Lionel Messi y su pareja Antonella Rocuzzo se ha sabido que un ex jugador del Real Madrid está invitado al enlace.</strong>'
      },
      {
        _id: 'MJQIUVGPPJCSDGYDUFE6SIMB6U',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'Entre los <a href="http://as.com/tikitakas/2017/06/26/portada/1498509190_687200.html" target="_blank">260 invitados a la celebración </a>
          está, cómo no, toda la plantilla del Barça y algunos ex jugadores azulgranas como Ronaldinho, Xavi, Cesc Fábregas o Deco, además de otras grandes figuras del fútbol mundial como Lavezzi y Agüero.'
      },
      {
        _id: '5HL7OES5BJDQPEVVMX3DH4D5AE',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'Desde Diez, sin embargo, informan que estas no serían todas las caras conocidas que acudirán a la mediática boda, 
          que contará con <a href="http://as.com/tikitakas/2017/06/28/portada/1498634766_750691.html" target="_parent">todo tipo de comodidades para los invitados.</a> <strong>Un ex madridista estaría, 
            según la publicación, invitado al enlace y no sería otro que Ángel Di Maria.</strong>'
      },
      {
        _id: 'RBVQCVJDRZGS3OVHO3WW5FITKU',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'El jugador del París Saint-Germain de la Ligue 1 de Francia y el delantero del FC Barcelona son compañeros en la Selección Argentina<strong>, </strong>por lo que esta información parece bastante lógica.'
      },
    ]

I need to access to content property and find if there is some attribute 'target' inside and if this is equal to _parent, remove it.

I tried to to this, first to locate the attribute inside content, but i can not achieve:

const newGroupElements = groupedElements.map(element =>
      element.content.includes("_parent")  ? {...element, content: 'i found you'} : element)

Thanks for your light in my knowledge.

CodePudding user response:

To remove the target attribute in the content string of a matching includes():

const newGroupElements = groupedElements.map(element => {
  if(element.content.includes("_parent")){
    element.content = element.content.replace(/target=". "/, "")
  }
  return element
})

Or maybe just

const newGroupElements = groupedElements.map(element => element.content.replace(' target="_parent"', ""))

CodePudding user response:

This is the function that you need to use :

groupedElements = groupedElements.map(val=>{
       if(val.includes("_parent")&&val.includes("target")) {
          let i = val.indexOf("target");
          val = val.split("");
          val.splice(i,"target='_parent'".length);
          val = val.join("");
       }
       return val;
    })

const groupedElements = [
      {
        _id: 'OVTBLNCDYBHP3IKUFQLGQF6AC4',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: '<strong>A 24 horas de que tenga lugar la boda entre el jugador del FC Barcelona Lionel Messi y su pareja Antonella Rocuzzo se ha sabido que un ex jugador del Real Madrid está invitado al enlace.</strong>'
      },
      {
        _id: 'MJQIUVGPPJCSDGYDUFE6SIMB6U',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'Entre los <a href="http://as.com/tikitakas/2017/06/26/portada/1498509190_687200.html" target="_blank">260 invitados a la celebración </a>\
          está, cómo no, toda la plantilla del Barça y algunos ex jugadores azulgranas como Ronaldinho, Xavi, Cesc Fábregas o Deco, además de otras grandes figuras del fútbol mundial como Lavezzi y Agüero.'
      },
      {
        _id: '5HL7OES5BJDQPEVVMX3DH4D5AE',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'Desde Diez, sin embargo, informan que estas no serían todas las caras conocidas que acudirán a la mediática boda, \
          que contará con <a href="http://as.com/tikitakas/2017/06/28/portada/1498634766_750691.html" target="_parent">todo tipo de comodidades para los invitados.</a> <strong>Un ex madridista estaría, \
            según la publicación, invitado al enlace y no sería otro que Ángel Di Maria.</strong>'
      },
      {
        _id: 'RBVQCVJDRZGS3OVHO3WW5FITKU',
        type: 'text',
        additional_properties: { tag: 'p' },
        alignment: 'center',
        content: 'El jugador del París Saint-Germain de la Ligue 1 de Francia y el delantero del FC Barcelona son compañeros en la Selección Argentina<strong>, </strong>por lo que esta información parece bastante lógica.'
      },
    ]
    groupedElements = groupedElements.map(val=>{
   if(val.includes("_parent")&&val.contains("target")) {
      let i = val.indexOf("target");
      val = val.split("");
      val.splice(i,"target='_parent'".length);
      val = val.join("");
   }
   return val;
})
    console.log(groupedElements)
    

  • Related