我是JavaScript的新手,我将非常感谢您的帮助。我尝试搜索数组的元素,但我找不到正确的解决方案。首先我试过这个,但没有成功。
var find = function(string, array) {
for(i=0;i>=array.length-1;i++){
if(array[i]==string){
return true;
}
else{
return false;
}
}
};
然后我尝试了这个
var find = function(string, array) {
if(array.indexOf(string)>-1){
return true;}
else{
return false;
}
};
但它不适用于数字 这是我的测试
Test.assertEquals(find("hello", ["bye bye","hello"]), true);
Test.assertEquals(find("2", ["bye bye","2"]), true);
Test.assertEquals(find("2", ["bye bye",2]), false);
答案 0 :(得分:1)
第一次找到与您要查找的元素不匹配的元素时,您将返回false。只有在处理完整个数组后才应返回false。您的循环也是不正确的,如果i为0,除非数组为空,否则它将永远不会大于或等于数组长度:
var find = function(string, array) {
for(i=0; i < array.length; i++) {
if(array[i]==string) {
return true;
}
}
return false;
};
您还应该关注命名约定。您的函数名为find
,但它实际上并未返回找到的元素。我将函数命名为contains
。
这是一个很好的学习练习,但不要重新发明轮子:
[1,2,3,4,5,6].indexOf(foo) > -1
如果数组中有foo
,则返回true。
答案 1 :(得分:0)
假设你有一个Test.assetEquals函数,只需使用build in array函数:
Test.assertEquals((["bye bye","hello"].indexOf('hello') > -1),true);
答案 2 :(得分:0)
使用类型转换:
var a = [1, 2, 3];
if (a.some(function (x) { return x == "2" })) {
...
}
严格比较:
if (a.indexOf("2") >= 0) {
...
}