С трудом возвращает индексы из массива, когда символы соответствуют шаблону

#arrays #function #javascript

#массивы #функция #javascript

Вопрос:

Я пытаюсь вернуть индексы из массива, когда символы в массиве соответствуют поисковому запросу, независимо от порядка символов в массиве.

 array = ['hell on here', '12345', '77788', 'how are you llo']

function charmatch(array,lookFor){
Indexarray = [];

for(I=0; I<array.length;I  ){
If (lookFor.charAt(I) <= array.indexOf(I))
Indexarray[Indexarray.length] = I
  

}
возвращает Indexarray;

 }
document.write(charmatch(array,"hello") )
  

Таким образом, это должно возвращать 0,3 в массиве. Как это можно было бы сделать?

Ответ №1:

Если вы используете jQuery, grep ( http://api.jquery.com/jQuery.grep / ) функция может быть вам полезна.

Ответ №2:

Это должно сделать это:

 function charmatch(arr, lookfor) {
    var result = [],
        split,
        found = false;

    // Iterate over every item in the array
    for (var i = 0; i<arr.length; i  ) {
        found = false;
        // Create a new array of chars
        split = arr[i].split('');
        // Iterate over every character in 'lookfor'
        for (var j = 0; j<lookfor.length; j  ) {
            found = false;
            // Iterate over every item in the split array of chars
            for (var k=0; k<split.length; k  ) {
              // If the chars match, then we've found one, 
              // therefore exit the loop
              if (lookfor.charAt(j) === split[k]) {
                found = true;
                break;
              }
            }
            // char not found, therefor exit the loop
            if (!found) {
                break;
            }
            // Remove the first item (which is a char), thus
            // avoiding matching an already matched char
            split.shift();
        }
        // if 'found' is true by now, then it means all chars have been found
        if (found) {
            // Add the current index to the result array
            result.push(i);
        }
    }
    return resu<
}

charmatch(['hell on here', '12345', '77788', 'how are you llo'], 'hello');