2016-11-26 299 views
1

我想看看在我的Json一定值。搜索字符串

搜索類型「patientSize」並找到「coveredText」的價值。

其實,控制檯拋出發現:[]

因爲我必須執行一些搜索,我要尋找一個快速,高性能的可能性。感謝您的提示。

例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

'代碼!== 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

還有一個問題。現在我找到了這個對象,但是我怎樣才能得到「覆蓋文字」的價值?謝謝! – 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)); 

注意過濾將返回的每一個元素匹配的條件。 您應該使用找到如果你知道,只有一個符合條件的對象,因爲它會返回與條件匹配的第一個元素。