Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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_Arrays_Dynamic Arrays - Fatal编程技术网

Javascript 比较我的数组直到数组中有多个值为止

Javascript 比较我的数组直到数组中有多个值为止,javascript,arrays,dynamic-arrays,Javascript,Arrays,Dynamic Arrays,我试图将多个值的数组传递给一个函数,该函数将检查这些值是否存在于div列表中,如果存在,则用红色背景标记它们 当我将任意字符串作为参数传递时,我的代码可以工作,当数组中只有一个值时,代码也可以工作。然而,一旦我的数组中有两个或多个值,它似乎就崩溃了,控制台中也没有任何信息提示我 我相信问题在于如何编写比较函数,但也可能在于如何传递数组 var postList=document.getElementsByClassName(“post”); var userList=新数组(); //将用户的

我试图将多个值的数组传递给一个函数,该函数将检查这些值是否存在于div列表中,如果存在,则用红色背景标记它们

当我将任意字符串作为参数传递时,我的代码可以工作,当数组中只有一个值时,代码也可以工作。然而,一旦我的数组中有两个或多个值,它似乎就崩溃了,控制台中也没有任何信息提示我

我相信问题在于如何编写比较函数,但也可能在于如何传递数组

var postList=document.getElementsByClassName(“post”);
var userList=新数组();
//将用户的关键字条目与div中的文本进行比较,并用红色背景标记“匹配”div
函数列表比较(集合、搜索文本){
对于(变量i=0;i-1){
集合[i].style.backgroundColor=“红色”;
}
}
}
//单击时将用户条目添加到数组并清除文本区域
document.getElementById(“保存”).addEventListener(“单击”,函数)(){
var listEntry=document.getElementById(“listEntries”).value;
push(listEntry);
document.getElementById(“listEntries”).value=“”;
log(userList);
})
//运行上述collectionContains函数的按钮的事件侦听器
document.getElementById(“运行”).addEventListener(“单击”,函数(){
列表比较(postList、userList);
});
div{
背景:#d0dbe6;
保证金:5px;
宽度:50%;
}
#名单{
宽度:300px;
高度:100px;
}


添加到过滤器 运行过滤器 宗教 猫 热狗 婴儿 请测试我 填料 乱数假文 你妈妈 宗教又来了 筑墙 不,是贝基
任何带有宗教信仰的东西都是该死的问题在于将数组传递给(如
集合[i].innerText.toLowerCase().indexOf(searchText)
)。该函数需要字符串作为搜索项,而不是数组

发生的情况是,您的数组正在转换为字符串。当数组只包含一个字符串而不包含其他元素时,它会工作,因为它的字符串表示形式是同一个字符串。但是,当数组包含多个元素时,它的字符串表示形式是所有这些字符串的逗号分隔列表,因此无法正确比较

您需要在数组中循环,以便在集合中的项目中搜索数组中的每个字符串(我已重命名该参数,以明确您正在传递数组):

var postList=document.getElementsByClassName(“post”);
var userList=新数组();
//将用户的关键字条目与div中的文本进行比较,并用红色背景标记“匹配”div
函数列表比较(集合、搜索列表){
对于(var i=0;i-1){
集合[j].style.backgroundColor=“红色”;
}
}
}
}
//单击时将用户条目添加到数组并清除文本区域
document.getElementById(“保存”).addEventListener(“单击”,函数)(){
var listEntry=document.getElementById(“listEntries”).value;
push(listEntry);
document.getElementById(“listEntries”).value=“”;
log(userList);
})
//运行上述collectionContains函数的按钮的事件侦听器
document.getElementById(“运行”).addEventListener(“单击”,函数(){
列表比较(postList、userList);
});
div{
背景:#d0dbe6;
保证金:5px;
宽度:50%;
}
#名单{
宽度:300px;
高度:100px;
}


添加到过滤器 运行过滤器 宗教 猫 热狗 婴儿 请测试我 填料 乱数假文 你妈妈 宗教又来了 筑墙 不,是贝基 任何带有宗教信仰的东西都是该死的
var userList=new Array();
//将用户的关键字条目与div中的文本进行比较,并用红色背景标记“匹配”div
函数列表比较(集合、搜索文本){
集合.过滤器(功能(elem){
return!!searchText.filter(函数(文本){
返回elem.innerText.toLowerCase().indexOf(text)>-1;
}).长度;
}).forEach(功能(元素){
elem.style.backgroundColor=“红色”;
});
}
//单击时将用户条目添加到数组并清除文本区域
document.getElementById(“保存”).addEventListener(“单击”,函数)(){
var listEntry=document.getElementById(“listEntries”);
push(listEntry.value);
listEntry.value=“”;
log(userList);
})
//运行上述collectionContains函数的按钮的事件侦听器
document.getElementById(“运行”).addEventListener(“单击”,函数(){
var collection=Array.prototype.slice.call(document.getElementsByClassName(“post”);
列表比较(集合、用户列表);
});
div{
背景:#d0dbe6;
保证金:5px;
宽度:50%;
}
#名单{
宽度:300px;
高度:100px;
}


添加到过滤器 运行过滤器 宗教 猫 热狗 婴儿 请测试我 填料 乱数假文 你妈妈 宗教又来了 筑墙 不,是贝基
任何带有宗教信仰的东西都是该死的谢谢!非常棘手的是有一个
String.prototype.indexOf()
和一个
Array.prototype.indexOf()
;那把我的头弄乱了。我也不习惯将for循环直接嵌套在for循环中。这种方法引入了我现有功能的一点回归,因为它不再将匹配应用于字符串的所有实例,而只应用于第一个实例(例如,在示例中,将“宗教”添加到列表中,不再突出显示所有包含“宗教”的条目). +但是,为了从技术上解决我的多值arr问题