Comment puis-je combiner deux objets dans un tableau tout en conservant les valeurs de clé dans les objets? J'ai trouvé des solutions à la fusion d'objets, mais aucun d'entre eux ne semble conserver les valeurs de clé.
Mon code crée de nouvelles voitures. Je veux organiser mes nouvelles voitures dans une matrice pendant plus tard, pouvoir les organiser par modèle, année modèle, couleur, etc. Une partie de cette logique organisationnelle n'a pas encore été mise en œuvre car je me concentre sur la fusion de l'objet repoussée Avant que les données ne deviennent trop longues. p> ma sortie souhaitée serait: p> peut-être ma logique erronée ici. Je suis sûr qu'il y a une meilleure façon de Organiser em> ces voitures, mais je ne comprends pas cela aussi. P> J'ai tenté de cartographier sur l'objet en utilisant des entrées, comme: p> mais ma sortie n'était pas exactement ce que je cherchais à la recherche de valeurs clés Comme: p> Merci d'avance pour toute aide. Je suis assez nouveau à cela, veuillez excuser tout ce qui devrait être fait une meilleure façon. P> p>
5 Réponses :
Utilisez la fonction p> Réduire code> à la place.
.as-console-wrapper { max-height: 100% !important; top: 0; }
Vous pouvez utiliser Array .Reduce () code>
et objet.tries () code>
pour faire cela. Pour chaque entrée de chaque voiture, vous appuyez sur le nom de la propriété, puis vous appuyez sur la valeur de la propriété dans votre réseau de sortie:
p>
class Car { constructor(type, model_year) { this.type = type, this.model_year = model_year } } class Tesla extends Car{ constructor(type, model_year){ super(type, model_year) } } const tesla1 = new Tesla("Sedan", 2015); const tesla2 = new Tesla("Coupe", 2014); const teslas = [tesla1, tesla2].reduce((acc, car) => { Object.entries(car).forEach(([key, val]) => acc.push(key, val)); return acc; }, []); console.log(teslas);
Vous pouvez le faire sous ce moyen simple de
<script type="text/javascript"> class Car { constructor(type, model_year) { this.type = type, this.model_year = model_year } } class Tesla extends Car{ constructor(type, model_year){ super(type, model_year) } } let myTesla1 = new Tesla("Sedan", 2015) let myTesla2 = new Tesla("Coupe", 2014) var objects = [myTesla1, myTesla2]; var results = []; objects.forEach(function(o){ for(var key in o){ results.push(key); results.push(o[key]); } }); console.log("myTesla1", myTesla1); console.log("myTesla2", myTesla2); console.log("results", results); </script>
Je vais travailler avec votre commentaire: Je suis sûr qu'il y a un meilleur moyen d'organiser ces voitures, mais je ne comprends pas aussi em> je suis Je vais suggérer que ce que vous voulez est une matrice avec une entrée par voiture et cette entrée est une carte simple des paires de la valeur de la clé. Vous pouvez utiliser p> objet.Assign code> pour accomplir le mappage de vos instances de classe à un objet uni: p>
class Car {
constructor(type, model_year) {
this.type = type,
this.model_year = model_year
}
}
class Tesla extends Car {
constructor(type, model_year) {
super(type, model_year)
}
}
let myTesla1 = new Tesla("Sedan", 2015)
let myTesla2 = new Tesla("Coupe", 2014)
const teslas = [myTesla1, myTesla2]
const carListWithKeyValues = teslas.map(tesla => Object.assign(tesla))
console.log(carListWithKeyValues)
/*
output:
[
{
"type": "Sedan",
"model_year": 2015
},
{
"type": "Coupe",
"model_year": 2014
}
]
*/
Cela a fonctionné parfait, merci beaucoup. Si je voulais prendre une étape supplémentaire et trier code> Ces Teslas sur la base de code> Type code> ou
Model_year code>, est-ce réalisable avec cette sortie puisque elle est un tableau d'objets différents?
Oui. Array.sort Code> Accepte une fonction personnalisée pour le tri, il y a une autre réponse à ce sujet si vous triez par des valeurs de chaîne: Stackoverflow.com/a/43816588/3084820
Vous pouvez utiliser concat.apply () code> et
objet.entries () code> comme:
Je suis sûr qu'il y a un meilleur moyen d'organiser ces voitures, mais je ne comprends pas cela aussi. I> Je me suis demandé lorsque vous regardez cela pour que vous souhaitiez aplativez vos objets d'une manière Cela rend l'association entre chaque voiture et ses attributs dépendant de leur commande dans le tableau. On dirait qu'il serait préférable d'avoir une matrice avec des voitures en tant que conteneurs de haut niveau, avec des valeurs de clé distinctes avec ce conteneur. Mais c'est à vous de décider, vraiment.