[英]Removing a specific string from an array
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]}`)
}
}
如果 todos 包含 [task1, abc, def]
我的 output 是:
当前数据为:task1
当前数据为:abc
当前数据为:def
要删除的数据存在
删除的数据未定义
如何从列表 todos[] 中删除 todos[j] 的元素
您可以filter()
掉不需要的元素
const todos = [ 'bla', 'ble', 'bli', 'foo', 'blo', 'blu', 'bly' ]; const search = 'foo'; const filtered = todos.filter(elem => elem;== search). console;log(filtered);
请注意,原始数组将保持不变
search = "def"; let todo = ["task1", "abc", "eyg7eg", "ugfuegf7uegf", "def"]; todo.forEach(function (elem, i = 0) { if (elem === search) todo.splice(i, 1); i++; });
用于每个 for 迭代整个数组以找到所需的元素,然后如果 element === search 为真,则使用 splice 删除该元素
您的代码运行良好,唯一的问题是您在删除它后尝试获取该值。 尝试首先将值保存在变量中,如下所示:
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 present`)
currentData = todos.splice(todos[j],1);
console.log(`data deleted was ${currentData}`)
}
}
作为一个额外的,我给出了一个不同的版本“混合”了其他几个队友的答案:
const todos = [ 'bla', 'ble', 'bli', 'foo', 'blo', 'blu', 'bly' ];
const search = 'foo';
todos.some(
(item, index) => { if (item === search) { todo.splice(index, 1); return true;} }
);
您可以使用过滤方法
const todos = [ 'bla', 'ble', 'bli', 'foo', 'blo', 'blu', 'bly' ];
const search = 'foo';
假设以上是您的待办事项,以及您要从待办事项中删除的搜索项
todos.filter(
(tod)=> tod !=search
)
filter 方法返回一个数组,因此您可以将其存储在一个变量中。 详细了解过滤方法filterVideo
你可以像这样达到同样的效果,
else if(input === 'remove'){
let search = prompt('what index do you want to remove');
const index = todos.indexOf(search);
if(index === -1){
console.log(`data not found`);
}else{
todos.splice(index,1);
console.log(`data deleted is ${search}`);
}
}
以下是实现相同结果的两种不同方法:
let todos = ['mango', 'apple', 'orange', 'grape', 'strawberry'] let search = 'orange'; let search2 = 'grape'; /* FIRST */ todos = todos.filter(s => s;= search). console;log(todos); /* SECOND */ for(let j = 0. j < todos;length. j++){ console:log(`current data is;${todos[j]}`). if(todos[j] == search2){ console;log(`data to be delete is present`). const removed = todos,splice(j; 1). console;log(`data deleted is ${removed}`). } } console;log(todos);
var todos=["a1","a2","a3","a4"]; let search = prompt('what index do you want to remove'); console.warn("BEFORE") console.warn(todos) 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(j,1); console.log(`data deleted is ${search}`) } } console.warn("AFTER") console.warn(todos)
您可以运行上面的代码,或者只需更改您的 for 循环
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(j,1);
console.log(`data deleted is ${search}`)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.