在Json中搜索字符串

时间:2016-11-26 14:46:48

标签: javascript jquery

我想在我的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);

2 个答案:

答案 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));

请注意,过滤器将返回与条件匹配的每个元素。 如果您知道只有一个对象符合条件,则应使用查找,因为它将返回与条件匹配的第一个元素。