Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
no se puede cambiar el elemento de la matriz con findIndex

Estoy tratando de cambiar un valor de una matriz. He estado investigando y el código no parece funcionar. tengo varios

 Array = [{ val1: "1", //these are actually lots of random numbers but im not gonna go though all that code val2: "2", nameval: "name", val4: "3" },{ val1: "4", val2: "5", nameval: "name", val4: "6"}] function updateName(e) { let pos = Array.findIndex(i => i.val1 === e.id ); if (Array[pos]) { Array[pos][nameval] = "work"; } else { Array[pos] = { nameval: "work", }; } console.log(Array) console.log("this should be 1 but it is: " + Array.findIndex(i => i.val1 === e.id)) }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <label> <input onchange="updateName(this)" class="first-class" id ="4" > </label>

Sé de al menos un problema que se encuentra al comienzo de este código Array.findIndex(i => i.val1 . Eso devuelve -1, lo que significa que falló.

Estos son algunos de los enlaces que uso: https://www.geeksforgeeks.org/indexof-method-in-an-object-array-in-javascript/

También recibí un error y este código supuestamente lo arregló: https://bobbyhadz.com/blog/javascript-cannot-set-property-of-undefined

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tienes que manejar dos casos:

  1. se encuentra el objeto

Si .findIndex() devuelve un número distinto de -1, actualice el elemento

  1. no se encuentra el objeto

.findIndex() devuelve -1. Entonces toma acción. por ejemplo, inserte un nuevo objeto, no haga nada, devuelva un error

 const dataArray = [{ val1: "1", //these are actually lots of random numbers but im not gonna go though all that code val2: "2", nameval: "name", val4: "3" },{ val1: "4", val2: "5", nameval: "name", val4: "6" } ] function updateName(search) { let pos = dataArray.findIndex(i => i.val1 === search.id ); if (pos > -1) { // found, so update dataArray[pos].nameval = search.new_value; } else { // not found, take action // option 1) // add a new entry with default data: dataArray.push({ val1: search.id, val2: "2", nameval: search.new_value, val4: "4" }); // // option 2) // // add a new entry with the data passed in search // dataArray.push({ // val1: search.id, // val2: search.val2, // nameval: search.new_value, // val4: "4" // }); // option 3) // take no action } console.log(dataArray) console.log("id: "+search.id+" now index is " + dataArray.findIndex(i => i.val1 === search.id)) } updateName({id:"1", new_value: "work"}) updateName({id:"4", new_value: "developer"}) updateName({id:"878", new_value: "freelancer"})

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda