Home > other >  Remove a sub level of an array
Remove a sub level of an array

Time:10-11

I get a list of items with add-ons from the server, but when I try to delete an add-on from this list I can't. I noticed that when I try to access the property grupoAdicionais.produto.codigo, it does not exist because it has a sublevel coming from the API, how do I remove this to have access to my product.codigo?

Array received from API:

"grupoAdicionais":[{"produto":{"codigo":21,"descricao":"Bacon"},"item":148657,"quantidade":1,"total":5},{"produto":{"codigo":13193,"descricao":"Queijo"},"item":148657,"quantidade":1,"total":1}]

My code in the reducer to return the list without the extra:

REMOVER_ADICIONAL: (state, action) => {
        let itemRemover = action.item;
        let listaReducer = state.lstItensRestauranteQRcode;
        const itemRemovido = listaReducer.filter((item) => {
            return item.grupoAdicionais.produto.codigo != itemRemover.produto.codigo;
        });
        state.lstItensRestauranteQRcode = itemRemovido;
    },

CodePudding user response:

If all you want to do is get a list of the codes:

const response = {"grupoAdicionais": [{
  "produto": {
    "codigo": 21,
    "descricao": "Bacon"
  },
  "item": 148657,
  "quantidade": 1,
  "total": 5
}, {
  "produto": {
    "codigo": 13193,
    "descricao": "Queijo"
  },
  "item": 148657,
  "quantidade": 1,
  "total": 1
}]}

const codigos = response.grupoAdicionais.map(grupo => grupo.produto.codigo)

console.log(codigos)
// => 

[ 21, 13193 ]

I'm not totally sure, but it seems like maybe you want to remove a group by its code.


const removeByCode = (code) => response.grupoAdicionais.filter((group) => group.produto.codigo !== code) 

const newGroups = removeByCode(21)

console.log(newGroups)
// => 

[
  {
    produto: { codigo: 13193, descricao: 'Queijo' },
    item: 148657,
    quantidade: 1,
    total: 1
  }
]

CodePudding user response:

var response = {"grupoAdicionais": [{
  "produto": {
    "codigo": 21,
    "descricao": "Bacon"
  },
  "item": 148657,
  "quantidade": 1,
  "total": 5
}, {
  "produto": {
    "codigo": 13193,
    "descricao": "Queijo"
  },
  "item": 148657,
  "quantidade": 1,
  "total": 1
}]}

console.dir(response.grupoAdicionais[0].produto.codigo)

grupoAdicionais is an array here, you have to access it like this: console.dir(response.grupoAdicionais[0].produto.codigo)

  • Related