2010-06-19 14 views

risposta

9
function find(key, array) { 
    // The variable results needs var in this case (without 'var' a global variable is created) 
    var results = []; 
    for (var i = 0; i < array.length; i++) { 
    if (array[i].indexOf(key) == 0) { 
     results.push(array[i]); 
    } 
    } 
    return results; 
} 
+1

Cordiali saluti, il metodo indexOf non riesce a IE8; Stavo per usare anche questo :((Sì, devo supportare IE più vecchi e vorrei non averlo fatto) – mkralla11

15

Utilizzare indexOf come suggerito da @Annie. indexOf viene utilizzato per trovare sottostringhe all'interno di una determinata stringa. Se non c'è corrispondenza, restituisce -1, altrimenti restituisce l'indice iniziale della prima corrispondenza. Se l'indice è 0, significa che la partita era all'inizio.

Un altro modo è utilizzare regular expressions. Utilizzare il carattere ^ in modo che corrisponda dall'inizio della stringa. L'espressione regolare:

/^he/

corrisponderà tutte le stringhe che iniziano con "he", come "ciao", "sentire", "elio", ecc Il metodo test per RegExp restituisce un valore booleano che indica se o non c'è stata una partita di successo. La regex precedente può essere testata come /^he/.test("helix") che restituirà true, mentre /^he/.test("sheet") non sarà come "he" non appare all'inizio.

Effettuare il ciclo attraverso ciascuna stringa nell'array di input e raccogliere tutte le stringhe corrispondenti (utilizzando indexOf o regex) in un nuovo array. Quella nuova matrice dovrebbe contenere ciò che vuoi.

1

Con 2 miglioramenti, possono trovare se contiene, non solo come primo carattere, e ha un terzo parametro per definire il valore restituito: vero mezzo restituiscono solo il numero di elementi all'interno della matrice (indice/chiave), false o qualsiasi cosa non accettata o nessun valore significa restituire la stringa completa array [elemento], e se impostato su 'position = 3', restituire i valori dell'array che contiene esattamente la stringa nella posizione 'after = number', qui 3!


function find(key, array, returnindex) 
{ 
var results = []; 
if {returnindex.indexOf('position=') == 0} 
{ 
    var a = parseInt(returnindex.replace('position=','')); 
    returnindex = false; 
} 
else if (returnindex != true) 
{ 
    returnindex = false; 
} 
for (var i = 0; i < array.length; i++) 
{ 
    var j = '-'+array[i].indexOf(key); 
    if (typeof a == 'undefined') 
    { 
     if (i > 0) 
     { 
      j = 'ok'; 
     } 
    } 
    else 
    { 
     if (i == a+1) 
     { 
      j = 'ok'; 
     } 
    } 
    if (j == 'ok' && returnindex) 
    { 
     results.push(i); 
    } 
    else 
    { 
     results.push(array[i]); 
    } 
} 
return results; 
} 
-1

È possibile utilizzare filtro con espressioni regolari per raggiungere questo obiettivo:

function startsWith(array, key) { 
 
    const matcher = new RegExp(`^${key}`, 'g'); 
 
    return array.filter(word => word.match(matcher)); 
 
} 
 

 
const words = ['apple','ape','open','soap'] 
 

 
const key = 'ap' 
 

 
const result = startsWith(words, key)

Problemi correlati