2015-07-28 5 views
0

Я разрабатываю приложение для словарей для FirefoxOS по Javascript. мой файл JSON выглядеть следующим образомИскать в Json файле и получать результаты с помощью Javascript

[ 
{"id":"3784","word":"Ajar","type":"adv.","descr":" Slightly turned or opened; as, the door was standing ajar.","track":"a","track_2":"Aj","track_3":"Aja"}, 
{"id":"3785","word":"Ajar","type":"adv.","descr":" In a state of discord; out of harmony; as, he is ajar with the world.","track":"a","track_2":"Aj","track_3":"Aja"},{"id":"3786","word":"Ajog","type":"adv.","descr":" On the jog.","track":"a","track_2":"Aj","track_3":"Ajo"}, 
{"id":"3787","word":"Ajutage","type":"n.","descr":" A tube through which water is discharged; an efflux tube; as, the ajutage of a fountain.","track":"a","track_2":"Aj","track_3":"Aju"}        ] 

Теперь я хочу, чтобы запросить этот файл JSON, где слово = «а ^» и получить все совпавшие результаты или корочки соответствующих результатов. Как я могу это сделать ?

+1

С ECMAScript 6 или без него? С ES6 это 'yourArray.filter (a => a.word.match (/ aj/i));' или 'yourArray.filter (a => a.word.match (/ aj/i)). Map (a => a.id); '. – Xufox

+1

Я понятия не имею, поддерживает ли firefoxOS ECMAScript или нет. но мне в основном нужно решение с использованием JavaScript. :/ –

+1

Ну, JavaScript _is_ ECMAScript (плюс материал браузера). Проблема в том, что не каждый браузер или система полностью поддерживает ES6. Однако ES5 поддерживается в основном всеми браузерами. – Xufox

ответ

0

TRY ЭТУ UPDATED FIDDLE DEMO

var jsonArrr =[ 
{"id":"3784","word":"Ajar","type":"adv.","descr":" Slightly turned or opened; as, the door was standing ajar.","track":"a","track_2":"Aj","track_3":"Aja"}, 
{"id":"3785","word":"Ajar","type":"adv.","descr":" In a state of discord; out of harmony; as, he is ajar with the world.","track":"a","track_2":"Aj","track_3":"Aja"},{"id":"3786","word":"Ajog","type":"adv.","descr":" On the jog.","track":"a","track_2":"Aj","track_3":"Ajo"}, 
{"id":"3787","word":"Ajutage","type":"n.","descr":" A tube through which water is discharged; an efflux tube; as, the ajutage of a fountain.","track":"a","track_2":"Aj","track_3":"Aju"}        ]; 

var matchMe = new RegExp('^' + 'aj', 'i'); 
    var matches = []; 
     for (var i in jsonArrr) { 
      if (jsonArrr[i].word.search(matchMe) > -1) { 

        matches.push({'id': i, 'word': jsonArrr[i].word}); 

      } 
     } 

Чтобы увидеть результат

for (var i in matches) { 
       console.log(matches[i].word); 
       //your code 
       } 

Возьмите консольное окно в Осмотрите элемент, чтобы увидеть результат

+0

Теперь, если я хочу искать с помощью слов = 'aj' и 'track_3' = 'aja', что я должен делать? –

0
var matchedIndexes = [] 
for (var i=0; i < array.length; i++) { 
    var obj = array[i]; 
    if (obj.hasOwnProperty("word")) { 
     if(obj["word"].match(/aj/i)) { 
      console.log("matched"); 
      matchedIndexes.push(i);  
     } 
    } 
} 

matchedIndexes будет содержать все индексы, в которых объект имеет слово «aj» (нечувствительный к регистру). array в этом коде - ваш объект массивов.

0

Перебор массива JSon:

var result = null; 
    Objects.forEach(function(obj, i){ 
     if(obj.word == 'aj'){ 
      return result = obj; 
     } 
    }); 
    console.log(result); 
Смежные вопросы