9

これは簡単な問題だと思いますが、私はjsに少し慣れておらず、解決策を見つけることができません。

基本的に、JSON文字列を関数に渡してから、渡された変数を反復処理しようとすると、配列ではなくリテラル文字列のように扱われます。

この機能で:

function build_codes_long(codes) {
   var codes_long_text = "";
   for(var i =0;i < codes.length-1;i++) {
      var code = codes[i];
      codes_long_text += "<p>" + code['id'] + " = " + code['del'] + "</p>";
   }
return codes_long_text; 
}

JSON文字列を次のように渡すと次のようになります。

[{"id":"1","del":"0","clip":"1"},{"id":"2","del":"0","clip":"1"}]

配列内の各項目ではなく、文字列内の各文字を評価します。したがって、2回ではなく65回ループし、次のようになります。

undefined = undefined

戻り値の問題を理解しています。配列を私が理解できないリテラル文字列のように扱うことです。ありがとう!

4

1 に答える 1

11

これは、オブジェクトをループしていないためです。文字列をループして、結果として各文字を取得しています。

最初にJSON文字列をオブジェクトに変換する必要があります。

var myObject = JSON.parse(myJsonString);
var codesLongText = build_codes_long(myObject);
于 2012-05-25T18:00:53.617 に答える