我想在我的Json中寻找某些值。
搜索“patientSize”类型并找到“coveredText”的值。
实际上,控制台抛出 found:[]
由于我必须进行一些搜索,我正在寻找快速和高性能的可能性。感谢您的提示。
示例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);
答案 0 :(得分:2)
函数getAge
必须像这样
function getAge(code) {
return data.annoDs.filter(function(data) {
return data.type === code;
}
}
<强>更新强>
您可以使用map
来获取coverdText
function getAge(code) {
return data.annoDs
.filter((data) => data.type === code)
.map((e) => e.coveredText);
}
答案 1 :(得分: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));
请注意,过滤器将返回与条件匹配的每个元素。 如果您知道只有一个对象符合条件,则应使用查找,因为它将返回与条件匹配的第一个元素。