Heim > Fragen und Antworten > Hauptteil
Wenn ich folgende Daten habe, wie folgt:
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);
Ich habe separate Ajax-Aufrufe für die children
Eigenschaft jedes übergeordneten Elements und sie geben ein Array zurück. Ist es möglich, diese drei Arrays zu kombinieren, um ein Array wie das in der Geige gezeigte zu erzeugen?
Die Originalquelle der oben genannten Daten ist hier und wurde von hier bezogen
Weitere Erklärungen, die ich möchte:
Ich habe 3 Arrays zur Hand.
"EmployeeID": 2,
Daten. "EmployeeID": 8,1,3,4和5
, die untergeordnete Elemente des ersten Arrays sind. "EmployeeID": 6,7和9
, die Kinder des zweiten Arrays sind. Ich habe alle oben genannten Arrays (oben nicht gezeigt) über Ajax-Aufrufe erhalten und habe mich gefragt, ob ich sie auf diese Weise kombinieren könnte, um Daten im oben genannten Format zu generieren.
Was mich verwirrt, ist, wie man children:
wie im obigen Format hinzufügt.
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));