我有一個名為“pedidos”的陣列,其長度為 x,因為它取決于我們通過 firebase 自動更新的“訂單”數量。
每個“訂單”具有以下屬性:
acudiente: ""
banco: "Global Bank"
data: (12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
email: ""
escuela: "Academia Internacional David"
estadoDeDisponibilidad: "Pendiente"
estadoDePago: "Pendiente"
fecha: "11/22/2021"
grado: "1° Grado"
id: "[AID]PM-345"
identificacion: ""
metodoDePago: "ACH"
nombre: "Brihana Orisiveth De Gracia Concepción "
phone: ""
total: "346.45"
totalPagado: 0
uid: "13eLyFqGGrZ0vTu3llpVxeFCBun2"
現在,每個訂單都有一個名為“資料”的屬性,它是 x 因為人們可以訂購 x 數量的東西,所以 12 不是一個常數。資料中的每個專案都具有以下屬性:
descripcion: "ACCELIUM - Programa de Tecnología"
disponible: 0
editorial: "Programa"
grado: (6) ['1° Grado', '2° Grado', '3° Grado', '4° Grado', '5° Grado', '6° Grado']
id: "L-25304"
materia: "Tecnologia"
ordenados: 12
precio: "35.00"
tipo: "Programa"
現在我正在嘗試創建一個包含每個資料陣列的新陣列,這意味著如果有 5 個訂單,每個訂單有 5 個專案,它應該是一個 25 的陣列,這是一個非常簡單的 for 回圈:
for(let x = 0; x < pedidos.length; x ){
for(let y = 0; y < pedidos[x].data.length; y ){
pedidosExcel.push(pedidos[x].data[y])
}
}
但是我還想要一些來自主陣列的屬性,而不僅僅是來自名為“data”的陣列的屬性,所以我想知道是否可以相互合并屬性。
更新
所以我無法做我想做的事,但我設法用下面的代碼接近它,但是如果我這樣做,由于某種原因,它最終會成為陣列中的一個陣列。我手動設定了每個屬性,因為我想覆寫其中一些屬性,因為某些屬性具有相同的名稱
for(let x = 0; x < pedidos.length; x ){
for(let y = 0; y < pedidos[x].data.length; y ){
pedidosExcel.push(pedidos[x].data[y])
pedidosExcel[y] = [{
id: pedidos[x].id,
nombre: pedidos[x].nombre,
escuela: pedidos[x].escuela,
grado: pedidos[x].grado,
fecha: pedidos[x].fecha,
descripcion: pedidos[x].data[y].descripcion,
tipo: pedidos[x].data[y].tipo,
editorial: pedidos[x].data[y].editorial,
precio: pedidos[x].data[y].precio,
}]
}
}
希望這比我之前的解釋更清楚。
uj5u.com熱心網友回復:
問題是您正在生成一個嵌套陣列,但您希望它是扁平的。您有幾個選擇:
選項 1:使用.flatMap():
這個功能只是.map()和.flat()
const pedidos = [{
id: '[AID]PM-345',
nombre: '999999990',
escuela: 'ABCDEF',
grado: '1° grado ',
fecha: '11/22/2021',
data: [
{
descripcion: 'ACCELIUM - Programa',
tipo: 'Programa',
editorial: 'Programa',
precio: '35.00'
},
{
descripcion: 'ACCELIUM - Programa 2',
tipo: 'Programa 2',
editorial: 'Programa 2',
precio: '45.00'
}
]
}];
const pedidosExcel = pedidos.flatMap(pedido =>
pedido.data.map(item => ({
id: pedido.id,
nombre: pedido.nombre,
escuela: pedido.escuela,
grado: pedido.grado,
fecha: pedido.fecha,
descripcion: item.descripcion,
tipo: item.tipo,
editorial: item.editorial,
precio: item.precio
}))
);
console.log(pedidosExcel);
選項 2 使用.reduce():
此功能的優點是使用范圍更廣,.flatMap()因此可能更容易理解。也許。
Reduce 遍歷陣列,并將值從一次迭代傳遞到下一次(acc在我的示例中)。
const pedidos = [{
id: '[AID]PM-345',
nombre: '999999990',
escuela: 'ABCDEF',
grado: '1° grado ',
fecha: '11/22/2021',
data: [
{
descripcion: 'ACCELIUM - Programa',
tipo: 'Programa',
editorial: 'Programa',
precio: '35.00'
},
{
descripcion: 'ACCELIUM - Programa 2',
tipo: 'Programa 2',
editorial: 'Programa 2',
precio: '45.00'
}
]
}];
const pedidosExcel = pedidos.reduce((acc, pedido) =>
[
...acc,
...pedido.data.map(item => ({
id: pedido.id,
nombre: pedido.nombre,
escuela: pedido.escuela,
grado: pedido.grado,
fecha: pedido.fecha,
descripcion: item.descripcion,
tipo: item.tipo,
editorial: item.editorial,
precio: item.precio
}))
],
[]);
console.log(pedidosExcel)
使用您認為對您的團隊來說最簡單和最容易理解的任何一種。
感謝您為您的問題添加代碼 - 下次請添加預期結果和資料作為代碼。
uj5u.com熱心網友回復:
據我所知,你有一個陣列,里面有物件(不是陣列),在這個物件中你有許多不同的鍵,其中一個鍵是data,它是包含其他物件的陣列。那么你想得到什么樣的資料模型呢?用小例子來描述它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364576.html
標籤:javascript 数组 反应
上一篇:無法使用地圖渲染axios的回應
