gpt4 book ai didi

javascript - 在 jQuery 中比较两个字符串不起作用

转载 作者:行者123 更新时间:2023-11-29 19:06:16 25 4
gpt4 key购买 nike

这是我的代码

function nameIsDuplicate(name){
objects = $("#content").find('p.itemOldName');
$(objects).each(function(i, object){
console.log("*"+($(object).text()).toLowerCase() + "*" + name.toLowerCase()+"*");
if(($(object).text()).toLowerCase() == name.toLowerCase())
return true;
});
return false;
}

我正在构建一个在线文件管理器系统。name 参数是用户通过文本框提供的名称,$(object).text() 是当前目录中文件和文件夹的名称。这些名称来自 exec("ls") 命令。

我需要检查用户提供的名称是否已经存在。所以我将 name 与每个文件/文件夹名称进行比较。问题是它没有找到重复项。上面代码的结果如下图所示

enter image description here

最佳答案

return trueeach 回调中返回。这对 each 没有影响(它只关心 return false)并且不做任何设置 nameIsDuplicate 的返回值。

您想在那里返回 false(无需继续寻找)并设置一个标志以便您的 nameIsDuplicate 可以返回它:

function nameIsDuplicate(name){
var duplicate = false;
objects = $("#content").find('p.itemOldName');
$(objects).each(function(i, object){
console.log("*"+($(object).text()).toLowerCase() + "*" + name.toLowerCase()+"*");
if(($(object).text()).toLowerCase() == name.toLowerCase()) {
duplicate = true;
return false; // Stop looping
}
});
return duplicate;
}

但是,使用Array.prototype.some 可以使这个函数简单很多:

function nameIsDuplicate(name){
var objects = $("#content").find('p.itemOldName');
name = name.toLowerCase();
return objects.get().some(function(object) {
return $(object).text().toLowerCase() === name;
});
}

some 为数组中的每个条目调用其回调。如果回调返回一个假值,some 继续;如果回调返回真值,some 停止。如果对回调的调用返回真值,some 的返回值为 true,否则为 false

关于javascript - 在 jQuery 中比较两个字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com