我正在使用angular和lodash。
我有两个对象数组。我想做的是从第二个获取vehicle
键值,并将其添加到新键consegne
内的veicolo
的每个对象中。我的目标是检查在steps.location
的{{1}}内是否有route
的{{1}}和lat_cliente
,是否为真,得到相应的long_cliente
键来自consegne
的值并将其添加到vehicle
的每个对象中,因此最后我可以知道哪个交付分配给了哪种车辆。
我的数组:
consegne:
route
路线:
consenge
在路线数组中
对象数组,我试图用lodash获取对象索引,以检查其中的嵌套数组值(即使也可以使用香草js解决方案)
这是我尝试过的:
consegne = {
"2020-06-03 14:30:00": [
{
"max(a.dataora_ord)": "2020-06-03T11:43:12.508Z",
id_ordine: 100002,
id_cliente: "2199",
id_negozio: "1",
numero_prodotti: 1,
importo: 11.3,
indirizzo_cliente: "VIA BENEDETTO CROCE 1 GUBBIO",
lat_cliente: 43.3422695,
long_cliente: 12.5914081,
lat_negozio: 43.1070321,
long_negozio: 12.402996209906487
}
],
"2020-06-04 14:30:00": [
{
"max(a.dataora_ord)": "2020-06-04T11:52:38.099Z",
id_ordine: 100003,
id_cliente: "2197",
id_negozio: "1",
numero_prodotti: 3,
importo: 67.64,
indirizzo_cliente: "VIA PIAVE 1 SAN GEMINI",
lat_cliente: 42.6103269,
long_cliente: 12.5503077,
lat_negozio: 43.1070321,
long_negozio: 12.402996209906487
}
],
"2020-06-01 11:30:00": [
{
"max(a.dataora_ord)": "2020-06-01T08:27:28.467Z",
id_ordine: 100000,
id_cliente: "2194",
id_negozio: "1",
numero_prodotti: 2,
importo: 8.71,
indirizzo_cliente: "PIAZZA BRANDUCCI 1 FOLIGNO",
lat_cliente: 42.95726165,
long_cliente: 12.70359885,
lat_negozio: 43.1070321,
long_negozio: 12.402996209906487
}
],
"2020-05-27 10:30:00": [
{
"max(a.dataora_ord)": "2020-05-27T07:44:00.000Z",
id_ordine: 99999,
id_cliente: "2210",
id_negozio: "1",
numero_prodotti: 5,
importo: 41.79,
indirizzo_cliente: "LOCALITA' ARVELLO 1 FOLIGNO",
lat_cliente: 43.0324959,
long_cliente: 12.8516742,
lat_negozio: 43.1070321,
long_negozio: 12.402996209906487
}
],
...
};
这是我的部分成功,但我想我缺少一些东西:
最终结果将是:
route = [
{
vehicle: 1,
cost: 9438,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 9438,
waiting_time: 0,
distance: 145681,
steps: [
{
type: "job",
location: [12.5503077, 42.6103269],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590071446,
duration: 4766,
distance: 73086
}
],
geometry:
""
},
{
vehicle: 1,
cost: 9438,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 9438,
waiting_time: 0,
distance: 145681,
steps: [
{
type: "job",
location: [12.5503077, 42.6103269],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590071446,
duration: 4766,
distance: 73086
}
],
geometry:
""
},
{
vehicle: 1,
cost: 6448,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 6448,
waiting_time: 0,
distance: 81974,
steps: [
{
type: "job",
location: [12.5914081, 43.3422695],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590069911,
duration: 3231,
distance: 40076
}
],
geometry:
""
},
{
vehicle: 1,
cost: 5066,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 5066,
waiting_time: 0,
distance: 73636,
steps: [
{
type: "job",
location: [12.70359885, 42.95726165],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590069018,
duration: 2338,
distance: 36148
}
],
geometry:
""
},
{
vehicle: 1,
cost: 8824,
delivery: [2],
amount: [2],
pickup: [0],
service: 840,
duration: 8824,
waiting_time: 0,
distance: 137129,
steps: [
{
type: "job",
location: [12.7224235, 42.9327554],
job: 1,
service: 420,
waiting_time: 0,
load: [1],
arrival: 1590069262,
duration: 2582,
distance: 42641
},
{
type: "job",
location: [12.3291318, 43.305996],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590073531,
duration: 6431,
distance: 102982
}
],
geometry:
""
},
{
vehicle: 1,
cost: 1562,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 1562,
waiting_time: 0,
distance: 16290,
steps: [
{
type: "job",
location: [12.4418193, 43.133661],
job: 4,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590067508,
duration: 828,
distance: 8181
}
],
geometry:
""
},
{
vehicle: 2,
cost: 17059,
delivery: [4],
amount: [4],
pickup: [0],
service: 1680,
duration: 17059,
waiting_time: 0,
distance: 245267,
steps: [
{
type: "job",
location: [12.5914081, 43.3422695],
job: 3,
service: 420,
waiting_time: 0,
load: [3],
arrival: 1590069911,
duration: 3231,
distance: 40076
},
{
type: "job",
location: [12.5407404, 43.1424873],
job: 1,
service: 420,
waiting_time: 0,
load: [2],
arrival: 1590072736,
duration: 5636,
distance: 74350
},
{
type: "job",
location: [12.538253, 43.1009005],
job: 2,
service: 420,
waiting_time: 0,
load: [1],
arrival: 1590073639,
duration: 6119,
distance: 80353
},
{
type: "job",
location: [12.6476612, 42.5602885],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590079503,
duration: 11563,
distance: 161286
}
],
geometry:
""
},
{
vehicle: 1,
cost: 4730,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 4730,
waiting_time: 0,
distance: 66605,
steps: [
{
type: "job",
location: [12.3291318, 43.305996],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590069017,
duration: 2337,
distance: 32457
}
],
geometry:
""
},
{
vehicle: 1,
cost: 6150,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 6150,
waiting_time: 0,
distance: 90278,
steps: [
{
type: "job",
location: [12.7592267, 43.0696255],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590069655,
duration: 2975,
distance: 45300
}
],
geometry:
""
},
{
vehicle: 1,
cost: 2947,
delivery: [1],
amount: [1],
pickup: [0],
service: 420,
duration: 2947,
waiting_time: 0,
distance: 31642,
steps: [
{
type: "job",
location: [12.517752, 43.155195],
job: 0,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590068153,
duration: 1473,
distance: 15811
}
],
geometry:
""
},
{
vehicle: 1,
cost: 12378,
delivery: [4],
amount: [4],
pickup: [0],
service: 1680,
duration: 12378,
waiting_time: 0,
distance: 178809,
steps: [
{
type: "job",
location: [12.7020796, 42.9564996],
job: 11,
service: 420,
waiting_time: 0,
load: [3],
arrival: 1590069028,
duration: 2348,
distance: 36221
},
{
type: "job",
location: [12.7020796, 42.9564996],
job: 10,
service: 420,
waiting_time: 0,
load: [2],
arrival: 1590069448,
duration: 2348,
distance: 36221
},
{
type: "job",
location: [12.649205, 42.5624235],
job: 8,
service: 420,
waiting_time: 0,
load: [1],
arrival: 1590074020,
duration: 6500,
distance: 91183
},
{
type: "job",
location: [12.5471666, 42.6143734],
job: 4,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590075752,
duration: 7812,
distance: 107094
}
],
geometry:
""
},
{
vehicle: 2,
cost: 8513,
delivery: [4],
amount: [4],
pickup: [0],
service: 1680,
duration: 8513,
waiting_time: 0,
distance: 117438,
steps: [
{
type: "job",
location: [12.7037126, 42.9575853],
job: 0,
service: 420,
waiting_time: 0,
load: [3],
arrival: 1590069044,
duration: 2364,
distance: 36287
},
{
type: "job",
location: [12.7592267, 43.0696255],
job: 6,
service: 420,
waiting_time: 0,
load: [2],
arrival: 1590070831,
duration: 3731,
distance: 53447
},
{
type: "job",
location: [12.7803655, 43.2322369],
job: 5,
service: 420,
waiting_time: 0,
load: [1],
arrival: 1590072722,
duration: 5202,
distance: 74454
},
{
type: "job",
location: [12.7860033, 43.2321763],
job: 1,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590073340,
duration: 5400,
distance: 75854
}
],
geometry:
""
},
{
vehicle: 3,
cost: 11843,
delivery: [4],
amount: [4],
pickup: [0],
service: 1680,
duration: 11843,
waiting_time: 0,
distance: 168496,
steps: [
{
type: "job",
location: [12.191765, 43.5116042],
job: 2,
service: 420,
waiting_time: 0,
load: [3],
arrival: 1590070697,
duration: 4017,
distance: 60993
},
{
type: "job",
location: [12.1659394, 43.5551518],
job: 9,
service: 420,
waiting_time: 0,
load: [2],
arrival: 1590071741,
duration: 4641,
distance: 67362
},
{
type: "job",
location: [12.5263973, 43.105579],
job: 7,
service: 420,
waiting_time: 0,
load: [1],
arrival: 1590076781,
duration: 9261,
distance: 136495
},
{
type: "job",
location: [12.4302894, 43.0265033],
job: 3,
service: 420,
waiting_time: 0,
load: [0],
arrival: 1590078466,
duration: 10526,
distance: 152845
}
],
geometry:
""
}
];
如何做到这一点?
这是我的闪电战:
谢谢。
答案 0 :(得分:1)
您可以尝试
const vehcord=[]
route.forEach(x=>{
for(let i=0;i<x.steps.length;i++){
vehcord.push({vehicle:x.vehicle,location:x.steps[i].location})
}})
for (let [key, value] of Object.entries(consegne)) {
vehcord.forEach(vkey=>{
value.forEach(x=>{
if(x.long_cliente==vkey.location[0] && x.lat_cliente==vkey.location[1])
x.veicolo = vkey.vehicle
})
})
}
console.log(consegne)