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

145
Visualizações
Eliminar un elemento que contiene una letra específica de una matriz

Tengo una matriz como esta.

 const cntry = ['Albania', 'Bolivia', 'Canada', 'Denmark', 'Ethiopia', 'Finland', 'Germany', 'Hungary', 'Turkey', 'Iceland', 'Ireland'];

Quiero eliminar los elementos que contienen la palabra "land" de esta matriz, pero como estoy estudiando "for loop", quiero eliminarlos usando solo el método "for".

Probé este código pero no funcionó. "Irlanda" todavía está en la matriz. ¿Qué hice mal?

 for (let i = 0; i < cntry.length; i++) { if (cntry[i].includes('land')) { cntry.splice(i, 1); } }

Producción:

 (9) ['Albania', 'Bolivia', 'Canada', 'Denmark', 'Ethiopia', 'Germany', 'Hungary', 'Turkey', 'Ireland']
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Estás mutando cntry for medida que lo haces. Esto rompe la relación de incremento/índice de todos los elementos restantes tan pronto como elimina un elemento de la matriz. Entonces, en su lugar, invierta el ciclo: comience desde el final de la matriz y trabaje hacia el comienzo:

 const cntry = ['Albania', 'Bolivia', 'Canada', 'Denmark', 'Ethiopia', 'Finland', 'Germany', 'Hungary', 'Turkey', 'Iceland', 'Ireland']; // start with the length of array minus 1 // decrement i by 1 after each loop // leave loop when i is less than 0 for (let i = cntry.length - 1; i >= 0; i--) { if (cntry[i].includes('land')) { cntry.splice(i, 1); } } console.log(cntry);

Ahora, cuando elimina un elemento, los índices anteriores aún corresponden a su valor de incremento actual.


Desarrollando: for (let i = cntry.length - 1; i >= 0; i--)

En su ciclo for, establezca la variable de incremento i en la longitud de la matriz menos 1. Dado que las matrices están indexadas en cero, lo que significa que el primer elemento está indexado en 0 , deberá comenzar su incremento en la longitud de la matriz menos 1. Allí hay 11 elementos en su matriz, por lo que el último elemento está indexado 10 .

 let i = cntry.length - 1;

Luego permita el ciclo mientras i sea mayor o igual a >= 0. En otras palabras, deje el ciclo cuando i sea menor que cero:

 i >= 0;

Y finalmente, decrement i . El cambio de incremento de bucle ocurre después de que se haya evaluado el bloque de bucle y antes de la siguiente iteración.

 i--

En el "mundo real", usaría una construcción de bucle que se adapta bien al bloque de código que desea evaluar. Dado que está mutando la matriz, sería más adecuado forEach loop ya que no depende de mantener una relación de incremento/índice. Tal vez ese sea el propósito de su tarea, mostrarle cuándo un ciclo for no es apropiado.

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes filter tu lista porque cuando usas slice estás sobrescribiendo la matriz original:

 const countryList = ['Albania', 'Bolivia', 'Canada', 'Denmark', 'Ethiopia', 'Finland', 'Germany', 'Hungary', 'Turkey', 'Iceland', 'Ireland'] const filter = 'land' const filteredList = [] for (const country of countryList) { if (!country.includes(filter)) { filteredList.push(country) } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Ya existe una mejor respuesta que utiliza la matriz existente, pero aquí hay una solución alternativa.

 const cntry = ['Albania', 'Bolivia', 'Canada', 'Denmark', 'Ethiopia', 'Finland', 'Germany', 'Hungary', 'Turkey', 'Iceland', 'Ireland']; const newArray = []; // new target array for countries that don't have 'land' in the name // looping through the cntry array for (let i = 0; i < cntry.length; i++) { // checking to see if the current country in the loop iteration doesn't include 'land' - if false then push that country to the array => newArray if (!cntry[i].includes('land')) { newArray.push(cntry[i]); } } console.log(newArray);

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