Javascript 如何解决大写检查器的问题?
我有一个问题。这是我的TodoList项目:(如果你想更好地理解这个问题,请检查链接。)我试图阻止相同的单词作为项目添加到列表中。我试图用里面的“toLowerCase”命令来控制它。但它不断添加相同的单词,因为它们的字母大小不同,例如:“Berkay”“Berkay”“我希望这两个单词不包括在内,即使它们的字母大小不同Javascript 如何解决大写检查器的问题?,javascript,html,Javascript,Html,我有一个问题。这是我的TodoList项目:(如果你想更好地理解这个问题,请检查链接。)我试图阻止相同的单词作为项目添加到列表中。我试图用里面的“toLowerCase”命令来控制它。但它不断添加相同的单词,因为它们的字母大小不同,例如:“Berkay”“Berkay”“我希望这两个单词不包括在内,即使它们的字母大小不同 function addTodo(e) { const newTodoValue = todoInput.value.trim(); const newTod
function addTodo(e) {
const newTodoValue = todoInput.value.trim();
const newTodoValuee = todoInput.value.trim().toLowerCase();
let todos = getTodosFromStorage();
if (newTodoValue === "") {
console.log("merhaba");
} else if (todos.includes(newTodoValuee)) {
e.preventDefault();
console.log("Aynı Todo");
todoInput.value = "";
return false;
} else {
addTodoToUI(newTodoValue);
addTodoToStorage(newTodoValue);
}
e.preventDefault();
}
在这种情况下,
todos.includes(newTodoValuee)
需要扩展,因为您的情况不同
function addTodo(e) {
const newTodoValue = todoInput.value.trim();
const newTodoValuee = todoInput.value.trim().toLowerCase();
let todos = getTodosFromStorage();
if (newTodoValue === "") {
console.log("merhaba");
} else if (todos.includes(newTodoValuee)) {
e.preventDefault();
console.log("Aynı Todo");
todoInput.value = "";
return false;
} else {
addTodoToUI(newTodoValue);
addTodoToStorage(newTodoValue);
}
e.preventDefault();
}
相反,请使用以下命令:
if(todos.some(a=>a.trim().toLowerCase()==newTodoValuee))
在您的代码中,您正在检查是否有小写字母,但并没有将数组中的单词转换为小写字母
//Functions
function addTodo(e) {
const newTodoValue = todoInput.value.trim();
const lowerCaseTodoValue = todoInput.value.trim().toLowerCase();
let todos = getTodosFromStorage();
//should now convert to lowercase use this for comparisons
var words = todos.map(w => w.toLowerCase());
if (newTodoValue === "") {
console.log("merhaba");
} else if (words.includes(lowerCaseTodoValue)) {
e.preventDefault();
console.log("Aynı Todo");
todoInput.value = "";
return false;
} else {
addTodoToUI(newTodoValue);
addTodoToStorage(newTodoValue);
}
e.preventDefault();
}
这将解决您的问题转换为小写的todo不是您添加到todo列表中的todo
- 您使用变量newTodoValuee将todo转换为小写
- 您保存了不同的内容newTodoValue
function addTodo(e) {
const newTodoValue = todoInput.value.trim();
const newTodoValuee = todoInput.value.trim().toLowerCase();
let todos = getTodosFromStorage();
if (newTodoValue === "") {
console.log("merhaba");
} else if (todos.includes(newTodoValuee)) {
e.preventDefault();
console.log("Aynı Todo");
todoInput.value = "";
return false;
} else {
addTodoToUI(newTodoValue);
// addTodoToStorage(newTodoValue); //change the variable here to the one that end with "ee"
addTodoToStorage(newTodoValuee);
}
e.preventDefault();
}
这意味着在todo列表中检查的小写todo永远不存在,除非它被保存为小写
只需更改变量
function addTodo(e) {
const newTodoValue = todoInput.value.trim();
const newTodoValuee = todoInput.value.trim().toLowerCase();
let todos = getTodosFromStorage();
if (newTodoValue === "") {
console.log("merhaba");
} else if (todos.includes(newTodoValuee)) {
e.preventDefault();
console.log("Aynı Todo");
todoInput.value = "";
return false;
} else {
addTodoToUI(newTodoValue);
// addTodoToStorage(newTodoValue); //change the variable here to the one that end with "ee"
addTodoToStorage(newTodoValuee);
}
e.preventDefault();
}
谢谢你的解答,但我有一个问题。我是JavaScript新手。“=>”是什么意思?每次添加一个项目时,将所有项目都转换为小写,这是对资源的浪费。使用
.some
尽可能少地执行此操作。从某种意义上说,这是一种速记。现在不必做函数addTodo(e){blah blah blah},你可以做addTodo=(e)=>{blah blah blah blah blah blah}。如果你想了解更多,请看一看。如果你对js/css/或htmlI不熟悉,强烈建议看一看w3学校的文档'是一个非常方便的用法。我的方法增加了更多的执行时间,因为现在它必须循环遍历元素,然后将它们存储到变量中,然后继续函数。通过使用'.some()'方法,您可以减少所有这些浪费的时间和资源。如果您对'.some()感到困惑'方法快速查看或查看,如果您正在学习web开发,Mozilla文档也是一个非常好的资源。谢谢您的解答,但我有一个问题。我是JavaScript新手。什么意思“=>”?这是一个完全不同的问题。请检查:。如果您的问题得到了回答,请将响应标记为答案。那么您将丢失字符串中用户的大小写。然后,在这种情况下,我唯一能想到的是使用findIndex
,我相信当数据量很大时仍然会执行此操作。请参阅已接受的答案。JS提供一些
,在这种情况下非常有用。