J'ai des matrices de remorquage, je veux donc affecter les valeurs de la matrice au tableau d'objets, si vous avez le même identifiant
Ceci est mon code, mais le foreach a répété le premier tableau, et je veux attendre
quelque chose comme ça p>
4 Réponses :
faire le p> pousser code> dans l'extérieur foreach code>, pas l'intérieur interne. let cars =[
{
sap_code:"audi",
products:[
{id:23,name:"a4"},
{id:55,name:"a5"},
]
},
{
sap_code:"chevi",
products:[
{id:23,name:"x4"},
{id:55,name:"x5"},
]
}
]
let cars2= [{id:55, value:25000}]
let joinCar = []
cars.forEach((value)=> {
value.products.forEach((value2)=>{
const existing = cars2.filter((v, i)=> {
return (v.id == value2.id);
});
if (existing.length) {
value2.value = existing[0].value;
} else {
value2.value = null;
}
});
joinCar.push(value);
})
console.log(joinCar);
en utilisant pour-de et Array.Prototype.Find ( )
p>
let cars =[
{
sap_code:"audi",
products:[
{id:23,name:"a4"},
{id:55,name:"a5"},
]
},
{
sap_code:"chevi",
products:[
{id:23,name:"x4"},
{id:55,name:"x5"},
]
}
]
let cars2 = [{id:55, value:25000}]
const joinCar = [...cars] // you originally created a new array
for(const {products} of joinCar)
for(const product of products) {
const car2 = cars2.find(({id})=>id===product.id)
if(car2) product.value = car2.value
}
console.log(joinCar) Je pense que si vous utilisez un p> hashtable code> et réduisez code>, la complexité peut être considérablement réduite. Donc, la meilleure approche serait de créer une haquetable avec l'ID et les valeurs de Cars2 code> afin de trouver la correspondance et d'utiliser Réduire code> sur voitures code> quelque chose comme ça:
. let cars =[
{
sap_code:"audi",
products:[
{id:23,name:"a4"},
{id:55,name:"a5"},
]
},
{
sap_code:"chevi",
products:[
{id:23,name:"x4"},
{id:55,name:"x5"},
]
}
]
let cars2= [{id:55, value:25000}];
var hasTable = {};
for(let i of cars2){
hasTable[i.id] = i.value //create a hashtable with id and values
}
cars.reduce((a,v)=>{
let val = v.products.find(k=> hasTable[k.id]);
if(val){
val.value = hasTable[val.id];
}
return a
})
console.log(cars)
let cars =[
{
sap_code:"audi",
products:[
{id:23,name:"a4"},
{id:55,name:"a5",value:4500},
]
},
{
sap_code:"chevi",
products:[
{id:23,name:"x4"},
{id:55,name:"x5"},
]
}
];
let cars2 = [{id:55, value:25000}];
cars.forEach(car=>{
cars2.forEach(newCar=>{
let fc = car.products.findIndex(c=>c.id===newCar.id);
if (fc !==-1) car.products[fc].value=newCar.value;
});
});
console.log(JSON.stringify(cars))
Montrer la sortie attendue.
D'où vient l'identité 29?
Comment il sait qu'il doit être attaché à
chevi code> pas d'autres?