按名称包含字符串获取对象索引

时间:2017-04-26 19:02:41

标签: javascript jquery arrays

我有一个JS数组,使用jQuery toArray()方法,包含div中的所有li元素。现在我尝试获取包含特定字符串的数组的索引:显示。

我试过.index,.filter,但这一切都给了我同样的错误信息,

arraySlides.index is not a function
logic.js:218 Uncaught TypeError: showing is not a function

这是我的阵列:

[li.slide.showing, li.slide, li.slide]
0:li.slide.showing
1:li.slide
2:li.slide
length:3
__proto__:Array(0)

它是否无效,因为我试图找到一个字符串?

var current = arraySlides.index('showing');

好吧也许我不清楚。我试图得到索引,所以一个数字从数组中的类名包含显示..

3 个答案:

答案 0 :(得分:2)

您应该使用indexOf()方法。

var current = arraySlides.indexOf('showing');

您知道,indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。语法如下所示

arr.indexOf(searchElement) 

arr.indexOf(searchElement, fromIndex)

答案 1 :(得分:1)

var arr = $('li').toArray();
console.log(arr);

console.dir(searchStringInArray('showing',arr));

function searchStringInArray (str, strArray) {
    for (var j=0; j<strArray.length; j++) {
        if ( String(strArray[j]).indexOf(str) ) return strArray[j];
    }
    return -1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="slide showing">One</li>
<li class="slide">Two</li>
<li class="slide">Three</li>

https://jsfiddle.net/HappyiPhone/exbnpvh1/

答案 2 :(得分:0)

我只是为您提供了一种方法来获取包含子串index的数组元素的showing,因为这里的其他答案似乎在为您提供一种搜索整体的方法数组中的字符串。

var values = ["li.slide", "li.slide.showing", "li.slide"];

$.each(values, function(index, value) {
	if(value.includes('showing')) {
            console.log("Found at index:"+index);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>