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/

:上記のデータは、同じ長さの2つの配列を比較しようとしています。#text配列は配列より1つ大きいため、highlight値が存在するかどうかを確認するブール論理のために表示されない未定義の値があります。

于 2012-07-03T20:24:39.690 に答える