2017-08-29 2 views
0

xml文字列をPHPを使用してjsonに変換し、それを反復しようとする javascriptファイルに投稿しています。オブジェクトに複数のオブジェクトが含まれている場合、jsonには最初のサンプルのようなオブジェクトの配列が含まれていますが、.length関数を使用して反復できますが、オブジェクトにオブジェクトが1つしか含まれていないと配列は作成されず、.length関数は失敗します。どのようにオブジェクトの名前を知らなくても、どちらの場合でも反復処理を行うことができますか?サブオブジェクトが1つあるときにJson反復が失敗する

サンプル1:

{"class":[ 
    { 
     "name":"history", 
     "grade":"10" 
    }, 
    { 
     "name":"chemistry", 
     "grade":"8" 
    } 
    ] 
} 

サンプル2:

{"class": 
    { 
     "name":"history", 
     "grade":"10" 
    } 
} 

答えて

1

を必要としない、とundefinedの場合は、それはちょうどobjであることを意味しますArray.isArray(obj):オブジェクトが配列の最初のものであるかどうかを確認することができます

if collection.length == undefined: 
    collection = [collection] 

# the rest of the code doesn't need to be changed 
+0

*私はあなたが正しい – ankr

+0

@ankrを削除しました... –

+0

言っている再現することはできません* ....... – ankr

1

あなたはそのためforを使用することができますし、あなたがlengthをチェックすることができlength

var test = {"class":[ 
    { 
     "name":"history", 
     "grade":"10" 
    }, 
    { 
     "name":"chemistry", 
     "grade":"8" 
    } 
    ] 
} 

for (var i in test){ 
    console.log(test[i]); 
} 
1

:電気ショック療法は、その後、あなたはそれだけで一つの要素を持つ配列します。そうでない場合は、それを繰り返す必要はないことがわかります。

var obj = {"class":[ 
    { 
     "name":"history", 
     "grade":"10" 
    }, 
    { 
     "name":"chemistry", 
     "grade":"8" 
    } 
    ] 
} 

if (!Array.isArray(obj)) return obj; 
// else iterate it. 
1

.lengthの使い方を知る前に、変数のデータ型を知る必要があります。

var dataTypeLength; 
 
var data = { 
 
"class": 
 
    { 
 
    "name":"history", 
 
    "grade":"10" 
 
    } 
 
} 
 

 
if (Array.isArray(data.class)) { 
 
    dataTypeLength = data.class.length; 
 
} else { 
 
    dataTypeLength = Object.keys(data.class).length; 
 
} 
 

 
console.log(dataTypeLength);

関連する問題