2013-08-28 2 views
1

У меня есть массив с некоторыми значениями. Как я могу искать этот массив с помощью jQuery для значения, которое соответствует или близко к нему?Как найти массив в JQuery как SQL LIKE value% statement

var a = ["foo","fool","cool","god","acl"]; 

Если я хочу найти c, то он должен вернуть cool но не acl.

Как я могу это достичь?

+0

Как 'c' близко к' cool' но не 'acl'? Вы хотите, чтобы слово начиналось с 'c'? – Cristy

+0

Вы можете использовать регулярное выражение в качестве замены для 'value%', используя значение '/ ^. * /' – jcubic

ответ

1

Попробуйте это: -

arr = jQuery.grep(a, function (value) { 
    search = /c/gi; 
    if(value.match(search)) return true; 
     return false; 
    }); 

или

function find(arr) { 
    var result = []; 

    for (var i in arr) { 
     if (arr[i].match(/c/)) { 
      result.push(arr[i]); 
     } 
    } 

    return result; 
} 

window.onload = function() { 
    console.log(find(["foo","fool","cool","god","acl"])); 
}; 
+0

-1: jQuery? Откуда? – Jon

+1

@Jon: jQuery прав в заголовке вопроса. И вопрос тела. Я обновил теги. –

+0

@Jon: - Обновлен мой ответ !!! –

1

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

var strings = [ "foo", "cool", "acl" ]; 
var needle = "c"; 

for (var i = 0; i < strings.length; ++i) { 
    if (strings[i].substring(0, needle.length) === needle) { 
     alert("found: " + strings[i]); 
    } 
} 
1

A простой способ сделать это - проверить слова, начинающиеся с «c» и итерацию массива.

var ar = ['acl','cool','cat'] 
for(var i = 0 ; i<ar.length ; i++){ 
    console.log(ar[i].match(/^c/)) 
} 
//Prints: 
//null 
//["c", index: 0, input: "cool"] 
//["c", index: 0, input: "cat"] 
1

Вы можете использовать метод фильтрации, который доступен с JavaScript 1.6. Он вернет вам массив с отфильтрованными значениями. Очень удобно, если вы хотите сопоставить несколько элементов.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

var a = ["foo","fool","cool","god","acl"]; 
var startsWith = 'c'; 

a.filter(function (value) { 
    return value && value.length > 0 && value[0] == startsWith; 
}); 

// yields: ["cool"] 
0
var a = ["foo","fool","cool","god","acl"]; 
var Character="f"; 
for(i=0;i<a.length;i++){ 
    if(a[i].indexOf(Character)!=-1){ 

     document.write(a[i]+"<br/>"); 
    } 
} 
Смежные вопросы