else if(input === 'remove'){ let search = prompt('what index do you want to remove'); for(let j=0;j<todos.length;j++){ console.log(`current data is:${todos[j]}`); if(todos[j] === search){ console.log(`data to be delete is present`) todos.splice(todos[j],1); console.log(`data deleted is ${todos[j]}`) } }si todos contienen [tarea1, abc, def]
mi salida es:
los datos actuales son: tarea1
los datos actuales son:abc
los datos actuales son: def
los datos que se van a eliminar están presentes
los datos eliminados no están definidos
¿Cómo elimino el elemento que es todos[j] de la lista todos[]?
Puede filter() los elementos no deseados
const todos = [ 'bla', 'ble', 'bli', 'foo', 'blo', 'blu', 'bly' ]; const search = 'foo'; const filtered = todos.filter(elem => elem !== search); console.log(filtered);Tenga en cuenta que la matriz original permanecerá sin cambios
search = "def"; let todo = ["task1", "abc", "eyg7eg", "ugfuegf7uegf", "def"]; todo.forEach(function (elem, i = 0) { if (elem === search) todo.splice(i, 1); i++; });utilizado para cada iteración de toda la matriz para encontrar el elemento deseado, luego, si la búsqueda del elemento === es verdadera, entonces use el empalme para eliminar ese elemento
Su código tenía 2 problemas:
Arreglando estas 2 cosas, su código funciona bien, así:
let todos = ['task1', 'abc', 'def']; let search = prompt('what index do you want to remove'); for(let j=0;j<todos.length;j++){ let currentData = todos[j]; console.log(`current data is:${currentData}`); if(todos[j] === search){ console.log(`data to be delete is ${search}`) currentData = todos.splice(j,1); console.log(`data deleted was ${currentData}`) } }Por ejemplo, CONSOLE EXIT para 'abc' buscó :
current data is:task1 current data is:abc data to be delete is abc data deleted was abcAQUÍ les dejo una copia funcional de su propio código con todo lo que corrige.
Como extra , doy una versión diferente "mezclando" varias de las respuestas de otros compañeros:
const todos = ['task1', 'abc', 'def'];; const search = 'abc'; todos.some( (item, index) => { if (item === search) { todos.splice(index, 1); return true;} } ); console.log(todos);