2016-11-14 1 views
1

Я пытаюсь иметь такой же, как эффект в sql как sql в javascript.Не удается найти строку, содержащую подстроку?

Я знаю, что подобный вопрос уже присутствуют в Интернете, но следующий подход не работает для меня:

$(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», который должен нажать «ПЛАНИРОВАНИЕ & PROJE 00000000PG« в массив. Но это не так.

+3

чувствительный к регистру «перейдите в нижний регистр сначала, прежде чем сравнивать? – guradio

+1

@ guradio [Yep] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf#Case-чувствительность). –

+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); 


}); 
Смежные вопросы