#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');