-1
votes

Fusion de la matrice d'objet dans une matrice d'objets

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, xxx

et je veux attendre quelque chose comme ça xxx


3 commentaires

Montrer la sortie attendue.


D'où vient l'identité 29?


Comment il sait qu'il doit être attaché à chevi pas d'autres?


4 Réponses :


1
votes

faire le pousser code> dans l'extérieur foreach code>, pas l'intérieur interne.

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}]
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);


0 commentaires

0
votes

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)


0 commentaires

0
votes

Je pense que si vous utilisez un 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: .

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}];
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)


0 commentaires

0
votes

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))


0 commentaires