2016-08-08 92 views
1

有誰知道一種方法來檢查列表是否包含一個字符串而不使用indexOf?在我的數組中,一些字符串可能包含其他字符的一部分,所以indexOf會產生誤報。Javascript列表包含字符串

作爲一個例子,我將如何確定「component」是否在下面的數組中?

["component.part", "random-component", "prefix-component-name", "component"] 

更新:

好像我用假陽性的是誤導。我的意思是說,當我想自己匹配字符串時,組件會在那裏出現4次。

即。在檢查下面數組中是否存在「組件」時它應該返回false。

["component.part", "random-component", "prefix-component-name"] 
+1

的IndexOf不會給你假陽性。它會給你3.如果你想找到所有具有「otherstuffcomponent」的元素,你可以遍歷你的數組並查看'String.includes()' –

回答

3

使用Array.find API。

實施例:

"use strict"; 
 

 
let items = ["component.part", "random-component", "prefix-component-name", "component"]; 
 

 
let found = items.find(item => { return item === "component.part" }); 
 

 
if (found) { 
 
    console.log("Item exists."); 
 
}

有關詳細的使用示例。

參見: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find

+0

我想他想找到所有包含「component」的元素。 –

+0

@YasinYaqoobi這個問題有點不清楚,它聽起來像是要求搜索錯誤中包含單詞組件的項目。我已經包含了另一個解決方案。見下文。 –

+0

我顯然讓自己不清楚,我只想匹配確切的字符串「組件」。該示例旨在說明爲什麼我不能只使用indexOf。 – annedroiid

2

一種方法是使用.find()從數組中獲取所需的字符串。

1

嘗試使用$ .inArray()方法。

var list=["component.part", "random-component", "prefix-component-name", "component"]; 
if($.inArray(" component",list) != -1){ 
    console.log("Item found"); 
} 
0

有誰知道的方法來檢查,如果列表中包含不使用的indexOf一個字符串?在我的數組中,一些字符串可能包含其他字符的一部分,所以indexOf會產生誤報。

誤報? Array.prototype.indexOfArray.prototype.includes都使用嚴格平等這使得在這裏不可能。

-1

IndexOf不會給你誤報。它會給你3.如果你想找到所有具有「otherstuffcomponent」的元素,你可以遍歷你的數組,並檢查與String.includes()

這是一個初學者友好的解決方案。

var arr = ["component.part", "random-component", 
 
    "prefix-component-name", "component", "asdf"]; 
 
    
 
    console.log(arr.indexOf('component')); // give u 3 
 
    
 
    for (var i = 0; i < arr.length; i++){ 
 
     if (arr[i].includes('component')){ 
 
     console.log(arr[i]); 
 
     } 
 
    }