我有这个数组:
var str = "rrr";
var arr = ["ddd","rrr","ttt"];
我尝试检查如果arr包含str。我试试这个:
var res = arr .find(str);
但是上面的行不知道我做错了什么?
答案 0 :(得分:5)
尝试使用indexOf:它得到更广泛的支持,您可以获得相同的结果。
var index = arr.indexOf(str);
if(index != -1) {
console.log("found");
var element = arr[index]; //element found of your array
}
find
函数的问题可能是因为它的兼容性:
正如您所看到的,您使用不兼容的浏览器的可能性不大。
答案 1 :(得分:3)
find
(在ES2015中添加,又名“ES6”)需要一个函数谓词。您正在寻找indexOf
:
var res = arr.indexOf(str);
...通过将它们与===
进行比较来查找事物。如果找不到,你将获得-1,如果没有,你将获得它的索引。
你在评论中说过:
没有字符串存在我期望null如果存在我期望是真的
...这看起来有点奇怪(我认为你想要true
或false
),但这会给你:
var res = arr.indexOf(str) != -1 || null;
...因为JavaScript的curiously-powerful ||
operator (这是我博客上的帖子)。
只是为了完整find
:
但你可以使用find
; ES5版本(如果你是polyfilling但没有转换):
var res = arr.find(function(entry) { return entry === str; });
或在ES2015中:
let res = arr.find(entry => entry === str);
如果找不到,则{p> res
为null
,如果是str
则为str
。但是,您已经拥有find
,所以当您通过属性值搜索对象时,... :-) val model = RandomForestModel.load(sc, MODEL)
会更有用。
答案 2 :(得分:2)
使用简单的indexOf
方法很容易。只需查看documentation。
var array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
答案 3 :(得分:2)
.find
方法需要输入函数回调,而不是您正在寻找的字符串。
var res = arr.find(function (element) {
return element === str;
};
详细了解here。
答案 4 :(得分:2)
尝试使用var foo = ['aaa', 'bbb', 'ccc'];
console.log(foo.includes('aaa'));
console.log(foo.includes('ddd'));
true
false
输出
Array#includes
注意: char* streverse(char* s){
int len=strlen(s);
int i=0; int j=len;
char* r;
while(i<j){
s[i]=s[j];
i++; j--;
}
printf("\nReverse string is %s",s);
return r;
}
直到ES2016(2016年6月)才被添加,所以你需要一个polyfill / shim甚至轻微日期浏览器(这很简单,MDN上有一个)。