2016-11-14 14 views
1

Ich versuche, sql's Like-Klausel wie Effekt in Javascript zu haben.Kann nicht gefunden werden, wenn eine Zeichenfolge eine Teilzeichenfolge enthält?

Ich bin mir bewusst, dass ähnliche Frage im Internet bereits vorhanden ist, aber der folgende Ansatz funktioniert nicht für mich:

$(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>

Ich habe String gesetzt, die in String nachgeschlagen werden soll, als "lan", die "PLANUNG & PROJE 00000000PG" in das Array drücken sollte. Aber das tut es nicht.

+3

Groß- und Kleinschreibung zuerst versuchen, zuerst in Kleinbuchstaben vor dem Vergleich zu ändern? – guradio

+1

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

+0

'toLowerCase()', um es case insensitiv zu machen, oder Sie können 'localeCompare()' verwenden, um die Zeichenfolge zu vergleichen –

Antwort

2

Ich denke, dass das Problem mit dem Briefgehäuse ist. Versuchen Sie folgendes:

$(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

dummer Brief Gehäuse – Arbaaz

+0

Verdammt, ich weiß. Alles, was wir beachten müssen, ist, entweder in Kleinbuchstaben oder in Großbuchstaben zum Vergleich zu konvertieren. –

1

Ich schlage vor, für Kleinbuchstaben zu suchen und die Suchkette außerhalb der Schleife bewegen.

$(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>

Für eine kurze Version, könnten Sie 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

verwenden Wenn Sie Original-String schieben wollen, dann mit String konvertiert vergleichen mit toLowerCase() und drücken Sie die ursprüngliche Zeichenfolge als sho wn unter:

$(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); 


}); 
Verwandte Themen