0

如何转换此 JSON 对象:

"context":{"#text":["Most Visited Pages  "," 
Hall Residents Advanced Components"," Clerk"],"highlight":["City","City"]}

进入:

Most Visited Pages <highlight>City</highlight> 
Hall Residents Advanced Components <highlight>City</highlight> Clerk

通过使用Javascript?

我试过了:

 function highlightContext_22(context) {
      var highlighted;
      $.each(context['#text'], function(key, val) { 
           highlighted += val + val.highlight;
      });
      return highlighted;
 }

输出是:

undefinedMost Visited Pages undefined 
Hall Residents Advanced Components undefined Clerkundefined
4

1 回答 1

2

该属性val.highlight不存在,这就是您未定义的原因。您的对象具有 的键的数组值#text。键是一个单独的highlight属性,因此无法在当前上下文中访问。

下面的解决方案更正了引用以允许highlight引用该值。 出于说明目的,我添加了其他指标。

JavaScript:

var obj = {
    "context": {
        "#text": [
            "Most Visited Pages  ",
            " Hall Residents Advanced Components",
            " Clerk"
        ],
        "highlight": [
            "City",
            "City"
        ]
    }
};

var result = [];
var data = obj.context;

for(var i=0; i < data['#text'].length; i++){
    result[i] = data['#text'][i] + (data.highlight[i] ? '<highlight>' + data.highlight[i] + '</highlight>' : '');
}

document.getElementById('result').innerHTML = result.join('');

alert(document.getElementById('result').innerHTML);

演示:http: //jsfiddle.net/Wv3vH/

注意:上述数据试图比较两个长度相等的数组。由于#text数组比highlight数组大一,因此存在一个未定义的值,由于布尔逻辑检查该值是否存在而未显示。

于 2012-07-03T20:24:39.690 回答