Rumah > Soal Jawab > teks badan
Jika saya mempunyai data berikut seperti berikut:
var data = [{ "EmployeeID": 2, "FirstName": "Andrew", "LastName": "Fuller", "Country": "USA", "Title": "副总裁,销售", "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": "内部销售协调员", "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": "销售代表", "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": "销售代表", "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": "销售代表", "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": "销售经理", "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": "销售代表", "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": "销售代表", "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": "销售代表", "HireDate": "1994-11-15 00:00:00", "BirthDate": "1966-01-27 00:00:00", "City": "London", "Address": "7 Houndstooth Rd." } ] } ] }]; console.log(data);
Saya mempunyai panggilan Ajax yang berasingan untuk setiap children
harta ibu bapa dan mereka mengembalikan tatasusunan. Adakah mungkin untuk menggabungkan tiga tatasusunan ini untuk menghasilkan tatasusunan seperti yang ditunjukkan dalam biola?
Sumber asal data di atas ada di sini, yang diperoleh dari sini
Penjelasan lanjut saya mahu:
Saya mempunyai 3 tatasusunan di tangan.
"EmployeeID": 2,
data. "EmployeeID": 8,1,3,4和5
, iaitu anak tatasusunan pertama. "EmployeeID": 6,7和9
, iaitu anak tatasusunan kedua. Saya mendapat semua tatasusunan di atas (tidak ditunjukkan di atas) melalui panggilan Ajax dan tertanya-tanya sama ada saya boleh menggabungkannya sedemikian rupa untuk menjana data dalam format di atas.
Apa yang mengelirukan saya adalah bagaimana untuk menambah children:
seperti dalam format di atas.
P粉2765774602023-09-07 11:24:21
Di sini anda boleh mencuba logik ini:
Kita boleh menghantar data dengan struktur bersarang seperti:
data->childrenArray->data->childrenArray dll. Dalam MakeNestedInLinear(data) ia akan mengembalikan satu hasil Flat dalam tatasusunan ( data linear)
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));