使用原型函数在数组中查找字符串

时间:2016-09-13 06:51:43

标签: javascript

我有这个数组:

var str = "rrr";
var arr = ["ddd","rrr","ttt"];

我尝试检查如果arr包含str。我试试这个:

  var res = arr .find(str);

但是上面的行不知道我做错了什么?

5 个答案:

答案 0 :(得分:5)

尝试使用indexOf:它得到更广泛的支持,您可以获得相同的结果。

var index = arr.indexOf(str);
if(index != -1) {
  console.log("found");
  var element = arr[index]; //element found of your array
}

find函数的问题可能是因为它的兼容性:

enter image description here

正如您所看到的,您使用不兼容的浏览器的可能性不大。

答案 1 :(得分:3)

find(在ES2015中添加,又名“ES6”)需要一个函数谓词。您正在寻找indexOf

var res = arr.indexOf(str);

...通过将它们与===进行比较来查找事物。如果找不到,你将获得-1,如果没有,你将获得它的索引。

你在评论中说过:

  

没有字符串存在我期望null如果存在我期望是真的

...这看起来有点奇怪(我认为你想要truefalse),但这会给你:

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> resnull,如果是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上有一个)。