2016-11-23 17 views
0

次のネストされたオブジェクトがあります。特定の要素のネストされたオブジェクト構造を反復する

[{ 
    "inc": [{ 
     "type": "Entity", 
     "scope": "A" 
    }, { 
     "type": "Entity", 
     "scope": "B" 
    }], 
    "inv": [{ 
     "type": "Entity", 
     "scope": "C" 
    }], 
    "oth": [{ 
     "type": "Entity", 
     "scope": "D" 
    }], 
    "pro": [{ 
     "type": "Support Dept", 
     "scope": "E" 
    }, { 
     "type": "Entity", 
     "scope": "F" 
    }, { 
     "type": "Entity", 
     "scope": "C" 
    }], 
    "ap": [{ 
     "type": "Support Dept", 
     "scope": "A" 
    }] 
}] 

は、この上の任意のヘルプをお願い申し上げ:何が

JSONObject["inc"]["scope"] 

オブジェクト、のように個別にそれらを参照することなく、アレイ内のすべての「スコープ」の値を取得する最も簡単な方法だろう。ここで

答えて

1

はこれを試してみてください:私はかかるだろう

var obj = [{ 
 
    "inc": [{ 
 
    "type": "Entity", 
 
    "scope": "A" 
 
    }, { 
 
    "type": "Entity", 
 
    "scope": "B" 
 
    }], 
 
    "inv": [{ 
 
    "type": "Entity", 
 
    "scope": "C" 
 
    }], 
 
    "oth": [{ 
 
    "type": "Entity", 
 
    "scope": "D" 
 
    }], 
 
    "pro": [{ 
 
    "type": "Support Dept", 
 
    "scope": "E" 
 
    }, { 
 
    "type": "Entity", 
 
    "scope": "F" 
 
    }, { 
 
    "type": "Entity", 
 
    "scope": "C" 
 
    }], 
 
    "ap": [{ 
 
    "type": "Support Dept", 
 
    "scope": "A" 
 
    }] 
 
}]; 
 

 
var arr = []; 
 
for (var i in obj[0]) { 
 
    for (var j in obj[0][i]) { 
 
    arr.push(obj[0][i][j]["scope"]) 
 
    } 
 
} 
 
console.log(arr)

1

は、あなたがそれを行うことができる方法である:

var obj = [{ 
 
    "inc": [{ 
 
     "type": "Entity", 
 
     "scope": "A" 
 
    }, { 
 
     "type": "Entity", 
 
     "scope": "B" 
 
    }], 
 
    "inv": [{ 
 
     "type": "Entity", 
 
     "scope": "C" 
 
    }], 
 
    "oth": [{ 
 
     "type": "Entity", 
 
     "scope": "D" 
 
    }], 
 
    "pro": [{ 
 
     "type": "Support Dept", 
 
     "scope": "E" 
 
    }, { 
 
     "type": "Entity", 
 
     "scope": "F" 
 
    }, { 
 
     "type": "Entity", 
 
     "scope": "C" 
 
    }], 
 
    "ap": [{ 
 
     "type": "Support Dept", 
 
     "scope": "A" 
 
    }] 
 
}]; 
 
    
 
res = Object.keys(obj[0]).reduce(function (acc, key) { 
 
    return acc.concat(obj[0][key].map (function (o) { 
 
     return o.scope; 
 
    })); 
 
}, []); 
 

 
console.log(res);

あなたの変数JSONObjectを呼び出さないでください。そのようなことはない。 JSONは、データ交換用のテキスト形式です。あなたが持っているのはJavaScriptオブジェクトです。これは解析したJSONから派生したものですが、JSONではありません。

+0

トークン ">"で構文エラーが発生しました。このトークンを "key =>"から削除します – Rishi

+0

実行中ですか? 'function(key){return obj [0] [key] [0] .scope}'を使用してください。 –

+0

でもこれはすべてのスコープ値を与えるわけではありません。これはインデックス0でのみスコープの値を与えます。 –

1

一つのアプローチは、機能的なアプローチになります。

ES2015

let scopes = obj.reduce((start ,item) => { 
 
    start = Object.keys(item).map(e => item[e]); 
 
    return start.concat.apply([] , start).map(e => e.scope); 
 
},[]); 
 
console.log('ES2015',scopes);

ES5

var scopes = obj.reduce(function(start ,item){ 
 
    start = Object.keys(item).map(function(e){ 
 
    return item[e]; 
 
    }) 
 
    return start.concat.apply([] , start).map(function(e){ 
 
    return e.scope 
 
    }); 
 
},[]); 
 

 
console.log('ES5',scopes)

関連する問題