var entityName = "",
arrTerms = [],
outputTemplate = '{"%entityName":[%terms]}',
h = {
"Division":
{
"oddTerms":
[
{
"entity": "Sunshine",
"Sunshine": [
{
"count": 2,
"entity": "Dodge"
},
{
"count": 1,
"entity": "Dodge Avenger"
},
]
}
]
}
};
for (var i = 0; i < h.Division.oddTerms.length; i++)
{
entityName=h.Division.oddTerms[i].entity; // "Sunshine"
terms = h.Division.oddTerms[i][entityName];
for (var j = 0; j < terms.length; j++) {
arrTerms.push('"' + terms[j].entity + '"');
}
}
// This will give you '{"Sunshine":["Dodge","Dodge Avenger"]}':
console.log(outputTemplate.replace('%entityName', entityName).replace('%terms', arrTerms.join(",")));
編集:ただ、もう少しこの上
を。
JSとオブジェクトと配列の "リテラル"の操作に慣れていない場合、JSONはちょっと混乱するかもしれません。 JSでは、さまざまな方法でオブジェクトと配列を定義できますが、最も簡単な(そして最も望ましいのは、多くの開発者が)これらのリテラルを使用しています。
ここでは、オブジェクトの例です:
myObj.anotherProp
// "別の値を" あなたが持っている
myObj["some prop"]
//:あなたはいくつかの方法でmyObj
のメンバーを検索することができます
var myObj = {
"some prop":"some value",
"anotherProp":"another value"
}
プロパティ名にスペースがある場合にこのフォームを使用する
配列の内容をループするには、 2番目の形式。たとえば、これは動作しません。
for (var strPropName in myObj) {
console.log(myObj.strPropName); // This won't work!
}
代わりに、あなたはこのような性質をループするべき:
for (var strPropName in myObj) {
if (myObj.hasOwnProperty(strPropName)) {
console.log(myObj[strPropName]);
}
}
if
ブロックはオプションですが、あなたならば、あなたは常に潜在的な問題を回避しますあなたのコードにこれを含めてください。いくつかのバリデーターにも必要です。
さて、ここでの配列の例です:
var myArray = ["some value", "anotherValue"];
あなたは数値インデックスでこれらにアクセス:
myArray[0] // "some value"
myArray[1] // "anotherValue"
myArray[2] // undefined
そして、それらを介してすることができますループ:
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
あなたは配列内のオブジェクトをネストすることができます。
myArray = [{},{},{}];
そして、あなたは、オブジェクト内部の巣配列することができます:あなたは何をするあなたのループ内の最後の行をどう
myObject = {"arr1":[], "arr2":[], "arr3":[]}
を期待していますか? – Andrew
私はそれを例にして警告します。btエンティティDodgeとDodge Avengerの値を警告する必要があります。 – user1371896
は2番目の最後の行と最後の行の値に日照を持ちます。エンティティ名を取得します。文字列に複数の要素が含まれている場合、jst sunshineよりも多くの値を持つことになります。 – user1371896