How to insert an object just after the iteration element in the javascript’s for of

Asked

Viewed 24 times

-1

I have a array I need to sweep with the for of javascript and need to check if my current element has the id == 2 If there is, I need to clone it and put it right after the current element. Example:

let data = [{id: 1}, {id: 2}, {id: 3}]
for (const dat of data) {
   if (dat.id == 2) {
      // quero inserir entre id 2 e id 3 um clone do meu elemento atual 
      // que no caso é o 2
   }
}

// Resultado esperado
[{id: 1}, {id: 2}, {id: 2}, {id: 3}]

Is it possible? or is it better to create an auxiliary array and write to it?

1 answer

0


You can use the findIndex to find the desired index, then clone and add at the following position using splice:

let data = [{id: 1}, {id: 2}, {id: 3}];
let idProcurado = 2;

// encontra o índice desejado
let indice = data.findIndex(function(elemento) {
   return elemento.id == idProcurado;
});

// se encontrou
if (indice > 0) {
   // clona um novo objeto e adiciona na posição a seguir
   let obj = { id: data[indice].id };
   // poderia usar var obj=data[indice]; mas isso não iria clonar e sim apontar para o mesmo objeto
   data.splice(indice+1, 0, obj);
}

console.log(data);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.