如果我有以下数据如下:
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);
对于每个父级的children属性,我有单独的Ajax调用,它们会返回一个数组。是否可能将这三个数组组合起来,生成一个如fiddle中所示的数组?
以上数据的原始来源是这里,这是从这里获取的
我想要的更多解释:
我手头有3个数组。
"EmployeeID": 2,的数据。"EmployeeID": 8,1,3,4和5,是第一个数组的子项。"EmployeeID": 6,7和9,是第二个数组的子项。我通过Ajax调用获取了以上所有数组(未在上面显示),想知道是否可以以这种方式组合它们,以生成上述格式的数据。
让我困惑的是如何像上面的格式中那样添加children: 。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
在这里你可以尝试这个逻辑:
我们可以传递具有嵌套结构的数据,例如:
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));