Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决大写检查器的问题?_Javascript_Html - Fatal编程技术网

Javascript 如何解决大写检查器的问题?

Javascript 如何解决大写检查器的问题?,javascript,html,Javascript,Html,我有一个问题。这是我的TodoList项目:(如果你想更好地理解这个问题,请检查链接。)我试图阻止相同的单词作为项目添加到列表中。我试图用里面的“toLowerCase”命令来控制它。但它不断添加相同的单词,因为它们的字母大小不同,例如:“Berkay”“Berkay”“我希望这两个单词不包括在内,即使它们的字母大小不同 function addTodo(e) { const newTodoValue = todoInput.value.trim(); const newTod

我有一个问题。这是我的TodoList项目:(如果你想更好地理解这个问题,请检查链接。)我试图阻止相同的单词作为项目添加到列表中。我试图用里面的“toLowerCase”命令来控制它。但它不断添加相同的单词,因为它们的字母大小不同,例如:“Berkay”“Berkay”“我希望这两个单词不包括在内,即使它们的字母大小不同

 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
注意每个变量末尾的双“e”

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提供
一些
,在这种情况下非常有用。