ネストされたプロパティテンプレートオブジェクトに変換したいオブジェクトの配列を作成しました。ネストされたオブジェクトは、チェックされた項目に基づいて作成されます。オブジェクトのネストされた配列をネストされたプロパティテンプレートオブジェクトに変換する
最初のレベルのオブジェクトは、プロパティテンプレートオブジェクトの先頭に常に追加されるため、「チェック済み」キーがnullに設定されています。
最初のレベルのオブジェクトはプロパティを持っていない、またはプロパティのどれがチェックされていない、それは次のようになります場合:
{staff: true}
しかし、オブジェクトのプロパティを持っているとプロパティのいくつかがチェックされている場合、それは次のようになります。
{staffedLocation: ['schedulingGroup',
{property: 'staff', subProperties: ['description']}
]
}
これは非常に単純な例であり、いくつかのケースでは、ネストされたオブジェクトの配列は、さらに下に行くことができますので、私は、私は再帰関数を作成する必要があります知っています。しかし、オブジェクトの最初のレベルが他のレベルと完全に異なる場合、再帰的にそれを作成する方法については、私はうまくいきませんでした。手持ちの
オブジェクトの配列の例は次のようになります。
[
{checked: null, name: "staffedLocation", properties: [
{checked: null, name: "oid", properties: null, toggle: null, type: "integer"},
{checked: null, name: "_class", properties: null, toggle: null, type: "string"},
{checked: true, name: "schedulingGroups", properties: null, toggle: null, type: "list"},
{checked: null, name: "staff", properties: [
{checked: null, name: "oid", properties: null, toggle: null, type: "integer"},
{checked: null, name: "_class", properties: null, toggle: null, type: "string"},
{checked: true, name: "description", properties: null, toggle: null, type: "string"},
{checked: null, name: "limits", properties: null, toggle: null, type: "list"},
{checked: null, name: "weeklyMaxHours", properties: null, toggle: null, type: "integer"}
], toggle: true, type: "list"},
], toggle: true, type: "staffedLocation"},
{checked: null,
name: "staff", properties: [
{checked: null, name: "oid", properties: null, toggle: null, type: "integer"},
{checked: null, name: "_class", properties: null, toggle: null, type: "string"},
{checked: null, name: "description", properties: null, toggle: null, type: "string"},
{checked: null, name: "limits", properties: null, toggle: null, type: "list"},
{checked: null, name: "weeklyMaxHours", properties: null, toggle: null, type: "integer"}
], toggle: true, type: "staff"},
{checked: null, name: "assignedShifts", properties: null, toggle: null, type: "shiftForEmail"},
{checked: null, name: "editedShifts", properties: null, toggle: null, type: "shiftForEmail"},
{checked: null, name: "deletedShifts", properties: null, toggle: null, type: "shiftForEmail"},
{checked: null, name: "unassignedShifts", properties: null, toggle: null, type: "shiftForEmail"},
{checked: null, name: "rangeStart", properties: null, toggle: null, type: "timestamp"},
{checked: null, name: "rangeEnd", properties: null, toggle: null, type: "timestamp"}
]
そして、私はそれがそのようにのようなネストされたオブジェクトに変換されたい:
{
staffedLocation: ['schedulingGroup',{property: 'staff',subProperties: ['description']}],
staff: true,
assignedShifts: true,
editedShifts: true,
deletedShifts: true,
unassignedShifts: true,
rangeStart: true,
rangeEnd: true
}
第1レベルが他のレベルと異なる場合は、第1レベルを反復するときに再帰関数を実行する必要があります。 [配列 'map'メソッド](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)をループに使用することができます。 – estus