所以基本上,我只需要弄清楚为什么我需要在代码中使用if语句...我知道为什么其他代码需要存在,但目前正在学习中。
const todos = [{
text: 'Order cat food',
completed: true
}, {
text: 'Clean kitchen',
completed: false
}, {
text: 'Buy food',
completed: true
}, {
text: 'Do work',
completed: false
}, {
text: 'exercise',
completed: true
}]
const deleteTodo = function (todos, todoText){
const index = todos.findIndex(function (todo){
return todo.text.toLowerCase() === todoText.toLowerCase()
})
if (index > -1) {
todos.splice(index, 1)
}
}
deleteTodo(todos, 'Buy food')
console.log(todos)
答案 0 :(得分:1)
此行if (index > -1) {
正在检查数组中元素的索引。如果该元素存在于数组中,它将返回数字0或大于0。-1
表示该元素不存在于数组中。同样,它也在检查数组中是否存在该元素。
因此,如果元素存在于数组中,则将应用splice
,它将返回removed
项。
答案 1 :(得分:0)
如果该项不在数组中,则Array.findIndex返回-1,执行索引为-1的拼接将导致错误。
答案 2 :(得分:0)
deleteTodo
函数将根据提供给它的text
从待办事项列表中删除一个项目。如果传递的text
不存在,则不应在待办事项的数组上执行splice
。
请注意,如果文本在其他findIndex
中存在,0
将返回从length-1
到-1
的数组索引。
例如:-
deleteTodo('eat food');
由于在eat food
数组中找不到todos
文本,因此上述内容不应更改数组。
考虑一下,如果您要为上述语句执行拼接,则会导致
todos.splice(-1,1)
这将删除todos
数组中的最后一项,因为-
(减号)表示从数组末尾开始的索引。