2016-11-26 3 views
1

Я хотел бы найти определенные значения в моем Json.Поиск в Json для строки

Найдите тип «patientSize» и найдите значение «coverText».

На самом деле, консоль выкидывает найдено: []

Поскольку я должен выполнить несколько поисков, я ищу возможность быстро и с высокой производительностью. Спасибо за ваши советы.

Пример JSON

{ 
"annoDs": [ 
    { 
     "begin": 512, 
     "end": 518, 
     "type": "patientSize", 
     "coveredText": "183 cm", 
     "additionalParameters": { 
      "unit": "Zentimeter", 
      "value": "183" 
     } 

    } 
] 

}

JS

var data = JSON.parse(retrievedAnnotation); 
setTimeout(function() { 

function getAge(code) { 
    return data.annoDs.filter(
     function(data){ 
     return data.code == code; 
     } 
); 
} 

var found = getAge('patientSize'); 
console.log("found:", found); 
}, 50); 
+2

'code! == type' – Andreas

ответ

2

Функция getAge должна быть, как это

function getAge(code) { 
    return data.annoDs.filter(function(data) { 
    return data.type === code; 
    } 
} 

UPDATE

Вы можете использовать map для, чтобы получить массив coverdText

function getAge(code) { 
    return data.annoDs 
    .filter((data) => data.type === code) 
    .map((e) => e.coveredText); 
} 
+0

Спасибо IzumiSy! – mm1975

+0

Ещё один вопрос. Теперь я нахожу объект, но как я могу получить значение «coverText»? Благодаря! – mm1975

+0

Я обновил ответ. Пожалуйста, проверьте его снова :) – IzumiSy

0

Проблема в том, что вы ищете недвижимости «код» каждого элемента в annoDs.

У вас есть:

data.code == code; // undefined != 'patientSize' 

Вы должны иметь:

function getAge(code) { 
    return data.annoDs.filter(
     function(data){ 
      return data.type == code; 
     } 
    ); 
} 

var found = getAge('patientSize'); 
found.forEach(el => console.log(el.coveredText)); 

Обратите внимание, что фильтр будет возвращать каждый элемент согласующего условию. Вы должны использовать найти, если вы знаете, что существует только один объект, соответствующий условию, потому что он вернет первый элемент, соответствующий условию.

Смежные вопросы