次のようなデータがあるとします。
リーリー
各親の children
プロパティに対して個別の Ajax 呼び出しがあり、配列が返されます。これら 3 つの配列を組み合わせて、フィドルに示されているような配列を生成することは可能ですか?
上記のデータの元のソースはここにあり、ここから取得されます
もっと説明が欲しい:
手元に 3 つのアレイがあります。
"EmployeeID": 2,
のデータが含まれています。 "EmployeeID": 8,1,3,4 および 5
が含まれており、これらは最初の配列の子です。 "EmployeeID": 6、7、9
が含まれており、これらは 2 番目の配列の子です。 Ajax 呼び出しを介して上記の配列 (上には表示されていません) をすべて取得し、これらをこの方法で結合して上記の形式のデータを生成できるかどうか疑問に思っていました。
私を混乱させるのは、上記の形式
children を追加する方法です。
P粉2765774602023-09-07 11:24:21
ここで、このロジックを試すことができます:
例:
data->childrenArray->data->childrenArray など、ネストされた構造でデータを渡すことができます。 MakeNestedInLinear(data) では、単一の配列 (線形データ) でフラットな結果が返されます
var data = [ { EmployeeID: 2, FirstName: "Andrew", LastName: "Fuller", Country: "USA", Title: "Vice President, Sales", HireDate: "1992-08-14 00:00:00", BirthDate: "1952-02-19 00:00:00", City: "Tacoma", Address: "908 W. Capital Way", expanded: "true", children: [ { EmployeeID: 8, FirstName: "Laura", LastName: "Callahan", Country: "USA", Title: "Inside Sales Coordinator", HireDate: "1994-03-05 00:00:00", BirthDate: "1958-01-09 00:00:00", City: "Seattle", Address: "4726 - 11th Ave. N.E.", }, { EmployeeID: 1, FirstName: "Nancy", LastName: "Davolio", Country: "USA", Title: "Sales Representative", HireDate: "1992-05-01 00:00:00", BirthDate: "1948-12-08 00:00:00", City: "Seattle", Address: "507 - 20th Ave. E.Apt. 2A", }, { EmployeeID: 3, FirstName: "Janet", LastName: "Leverling", Country: "USA", Title: "Sales Representative", HireDate: "1992-04-01 00:00:00", BirthDate: "1963-08-30 00:00:00", City: "Kirkland", Address: "722 Moss Bay Blvd.", }, { EmployeeID: 4, FirstName: "Margaret", LastName: "Peacock", Country: "USA", Title: "Sales Representative", HireDate: "1993-05-03 00:00:00", BirthDate: "1937-09-19 00:00:00", City: "Redmond", Address: "4110 Old Redmond Rd.", }, { EmployeeID: 5, FirstName: "Steven", LastName: "Buchanan", Country: "UK", Title: "Sales Manager", HireDate: "1993-10-17 00:00:00", BirthDate: "1955-03-04 00:00:00", City: "London", Address: "14 Garrett Hill", expanded: "true", children: [ { EmployeeID: 6, FirstName: "Michael", LastName: "Suyama", Country: "UK", Title: "Sales Representative", HireDate: "1993-10-17 00:00:00", BirthDate: "1963-07-02 00:00:00", City: "London", Address: "Coventry House Miner Rd.", }, { EmployeeID: 7, FirstName: "Robert", LastName: "King", Country: "UK", Title: "Sales Representative", HireDate: "1994-01-02 00:00:00", BirthDate: "1960-05-29 00:00:00", City: "London", Address: "Edgeham Hollow Winchester Way", }, { EmployeeID: 9, FirstName: "Anne", LastName: "Dodsworth", Country: "UK", Title: "Sales Representative", HireDate: "1994-11-15 00:00:00", BirthDate: "1966-01-27 00:00:00", City: "London", Address: "7 Houndstooth Rd.", }, ], }, ], }, ]; function MakeNestedInLinear(data) { return data.reduce((acc, elem) => { let stack = [elem]; while (stack.length) { let val = stack.shift(); if (val && val.children) { stack.push(...val.children); delete val.children; acc.push(val); } else acc.push(val); } return acc; }, []); } console.log(MakeNestedInLinear(data));