私は次のようにデイジーチェーン形に...JavaScriptオブジェクトをデイジーチェーンのような形に平坦化する方法は?
var obj1 = {
firstName: 'John',
lastName: 'Green',
car: {
make: 'Honda',
model: 'Civic',
revisions: [
{ miles: 10150, code: 'REV01', changes: },
{ miles: 20021, code: 'REV02', changes: [
{ type: 'asthetic', desc: 'Left tire cap' },
{ type: 'mechanic', desc: 'Engine pressure regulator' }
] }
]
},
visits: [
{ date: '2015-01-01', dealer: 'DEAL-001' },
{ date: '2015-03-01', dealer: 'DEAL-002' }
]
};
...このようなオブジェクトをフラット化したい:
function flatten(obj) {
var flattenObject = {};
// iterate given object
for (let x in obj) {
if (typeof obj[x] == 'string') {
flattenObject[x] = obj[x];
}
if (typeof obj[x] == 'object') {
for (let y in obj[x]) {
flattenObject[x + '.' + y] = obj[x][y];
}
}
}
return flattenObject;
}
:ここ
{
"firstName": "John",
"lastName": "Green",
"car.make": "Honda",
"car.model": "Civic",
"car.revisions.0.miles": 10150,
"car.revisions.0.code": "REV01",
"car.revisions.0.changes": ,
"car.revisions.1.miles": 20021,
"car.revisions.1.code": "REV02",
"car.revisions.1.changes.0.type": "asthetic",
"car.revisions.1.changes.0.desc": "Left tire cap",
"car.revisions.1.changes.1.type": "mechanic",
"car.revisions.1.changes.1.desc": "Engine pressure regulator",
"visits.0.date": "2015-01-01",
"visits.0.dealer": "DEAL-001",
"visits.1.date": "2015-03-01",
"visits.1.dealer": "DEAL-002"
}
は私の試みを(失敗)です
内側のオブジェクトと配列をデイジーチェーンするために、コードが不必要に繰り返され始めました。これは間違いなく再帰を必要とするものです。何か案は?
編集:この質問はotherquestionsに似ていますが、重複はありません。この質問には、特定の表記法とネストされたオブジェクトと配列が同時に必要です。
編集:私はまた、反対の、平らでない、another questionで尋ねました。
はあなたがcar.revisions [0] .miles' '上' car.revisions.0.miles'をしてもよろしいです?私は[タグ:asp-net.mvc]がネイティブに2番目のものを使用するので(私は最初に尋ねているので、タグ付けしていません)、私は尋ねます。 –
[ネストされたJSONオブジェクトをフラット/アンフラットするための最速の方法]の可能な複製(http://stackoverflow.com/questions/19098797/fastest-way-to-flatten-un-flatten-nested-json-objects) –
@ ErikPhilips car.revisions.0.milesは、私が探している結果です – nunoarruda