2016-11-14 50 views
1

我想在javascript中使用像sql这样的子句。无法找到一个字符串是否包含子字符串?

据我所知,类似的问题已经存在互联网上,但下面的方法是不是为我工作:

$(document).ready(function() { 
 
    var listAll = [ 
 
    "X1", 
 
    "ANTENNA SYSTEMS          00000000AS", 
 
    "Security & Wrokf         00000000CS", 
 
    "MICROWAVE & COMM         00000000MC", 
 
    "MICROWAVE SENSOR         00000000MT", 
 
    "PLANNING & PROJE         00000000PG", 
 
    "MECHANICAL SYSTE         00000000MS", 
 
    "ELECTRO-OPTICAL          00000000EO", 
 
    "SATCOM EXPERIMEN         00000000SE", 
 
    "QUALITY ASSURANC         00000000QA", 
 
    "QUALITY ASSURANC         00000000QC", 
 
    "DATA PRODUCTS SO         00000000DP" 
 
    ]; 
 
    var lstfiltered = ["X2"]; 
 

 
    for (i = 0; i <= listAll.length - 1; i++) { 
 
    console.log(listAll[i]); 
 
    var string = listAll[i]; 
 
    var substring = "lan"; 
 
    if (string.indexOf(substring) !== -1) { 
 
     lstfiltered.push(string); 
 
    } 
 
    } 
 

 
    console.log(lstfiltered); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

我已经设置子是在字符串中查找作为“lan”,应该将“PLANNING & PROJE 00000000PG”插入数组中。但事实并非如此。

+3

区分大小写?尝试在比较之前先改为小写? – guradio

+1

@guradio [是的](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf#Case-sensitivity)。 –

+0

'toLowerCase()'使它不区分大小写,或者你可以使用'localeCompare()'来比较字符串 –

回答

2

我认为问题出在信封上。试试这个:

$(document).ready(function() { 
 
    var listAll = ["X1", "ANTENNA SYSTEMS          00000000AS", "Security & Wrokf         00000000CS", "MICROWAVE & COMM         00000000MC", "MICROWAVE SENSOR         00000000MT", "PLANNING & PROJE         00000000PG", "MECHANICAL SYSTE         00000000MS", "ELECTRO-OPTICAL          00000000EO", "SATCOM EXPERIMEN         00000000SE", "QUALITY ASSURANC         00000000QA", "QUALITY ASSURANC         00000000QC", "DATA PRODUCTS SO         00000000DP"]; 
 
    var lstfiltered = ["X2"]; 
 
    
 
    for (i = 0; i <= listAll.length - 1; i++) { 
 
    console.log(listAll[i]); 
 
    var string = listAll[i]; 
 
    var substring = "lan"; 
 
    if (string.toLowerCase().indexOf(substring) !== -1) { 
 
     lstfiltered.push(string); 
 
    } 
 
    } 
 

 
    console.log(lstfiltered); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

+0

愚蠢的信封 – Arbaaz

+0

该死的,我知道。我们需要注意的是将其转换成小写或大写进行比较。 –

1

我建议寻找小写字母和移动搜索字符串的循环之外。

$(document).ready(function() { 
 
    var listAll = ["X1", "ANTENNA SYSTEMS          00000000AS", "Security & Wrokf         00000000CS", "MICROWAVE & COMM         00000000MC", "MICROWAVE SENSOR         00000000MT", "PLANNING & PROJE         00000000PG", "MECHANICAL SYSTE         00000000MS", "ELECTRO-OPTICAL          00000000EO", "SATCOM EXPERIMEN         00000000SE", "QUALITY ASSURANC         00000000QA", "QUALITY ASSURANC         00000000QC", "DATA PRODUCTS SO         00000000DP"]; 
 
    var lstfiltered = ["X2"]; 
 
    var substring = "lan"; 
 
    
 
    for (i = 0; i <= listAll.length - 1; i++) { 
 
    console.log(listAll[i]); 
 
    var string = listAll[i]; 
 
    if (string.toLowerCase().indexOf(substring) !== -1) { 
 
     lstfiltered.push(string); 
 
    } 
 
    } 
 

 
    console.log(lstfiltered); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

对于一个更简洁的版本,你可以使用Array#filter

$(document).ready(function() { 
 
    var listAll = ["X1", "ANTENNA SYSTEMS          00000000AS", "Security & Wrokf         00000000CS", "MICROWAVE & COMM         00000000MC", "MICROWAVE SENSOR         00000000MT", "PLANNING & PROJE         00000000PG", "MECHANICAL SYSTE         00000000MS", "ELECTRO-OPTICAL          00000000EO", "SATCOM EXPERIMEN         00000000SE", "QUALITY ASSURANC         00000000QA", "QUALITY ASSURANC         00000000QC", "DATA PRODUCTS SO         00000000DP"]; 
 
    var substring = "lan"; 
 
    var lstfiltered = listAll.filter(function (a) { 
 
      return a.toLowerCase().indexOf(substring) !== -1; 
 
     }); 
 

 
    lstfiltered.unshift('X2') 
 
    console.log(lstfiltered); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

如果你想要把原来的字符串,然后用绳子比较使用转换toLowerCase()并将原始字符串推送为sho wn如下:

$(document).ready(function() { 

    var listAll = ["X1", "ANTENNA SYSTEMS   00000000AS", "Security & Wrokf   00000000CS", "MICROWAVE & COMM   00000000MC", "MICROWAVE SENSOR   00000000MT", "PLANNING & PROJE   00000000PG", "MECHANICAL SYSTE   00000000MS", "ELECTRO-OPTICAL   00000000EO", "SATCOM EXPERIMEN   00000000SE", "QUALITY ASSURANC   00000000QA", "QUALITY ASSURANC   00000000QC", "DATA PRODUCTS SO   00000000DP"]; 

    var lstfiltered = ["X2"]; 




    for (i = 0; i <= listAll.length - 1; i++) { 
    console.log(listAll[i]); 

    var string = listAll[i].toLowerCase(); 

    var substring = "lan"; 
    if (string.indexOf(substring) !== -1) // compare with string converted by toLowerCase() 
     { 

     lstfiltered.push(listAll[i]); // Push original string. 

    } 
    } 

    console.log(lstfiltered); 


}); 
相关问题