Je travaille sur un projet et j'ai besoin d'analyser les données envoyées par un serveur. J'ai donc un gros JSON avec le nom OTA avec une donnée liée à celle-ci. Voici mon tableau: Comme vous pouvez le constater, j'ai plusieurs "AirBnB" ou "Booking.com" liés à une valeur, par exemple. Je voulais juste savoir si leur est un moyen facile de fusionner / résumer toutes ces valeurs en utilisant le nom lié à celui-ci. P> merci. P> p>
4 Réponses :
Vous pouvez utiliser dictionnaire dactylographié: ou si vous devez garder votre structure, vous pouvez faire quelque chose comme: p>
Merci ! J'ai utilisé le deuxième code que vous m'avez donné, cela a fonctionné, mais il y a ce que je ne comprends pas, quel est le "E" que vous avez mis comme argument de la fonction de recherche?
Le E code> représente un seul élément à partir du tableau CODE> TRAY.
Je recommanderais d'utiliser > Réduire code> strud>
Exemple: p>
p>
const jsonData = [{
name: "Airbnb",
value: 48
},
{
name: "Booking.com",
value: 6
},
{
name: "Air Rental",
value: 2
},
{
name: "Airbnb",
value: 50
},
{
name: "Booking.com",
value: 14
},
{
name: "Air Rental",
value: 1
},
{
name: "Airbnb",
value: 38
},
{
name: "Air Rental",
value: 3
},
{
name: "Booking.com",
value: 6
},
{
name: "HomeAway",
value: 1
},
{
name: "Airbnb",
value: 40
},
{
name: "HomeAway",
value: 1
},
{
name: "Booking.com",
value: 2
},
{
name: "Air Rental",
value: 2
},
{
name: "Airbnb",
value: 48
},
{
name: "Booking.com",
value: 6
},
{
name: "Air Rental",
value: 0
},
{
name: "Airbnb",
value: 11
},
{
name: "Air Rental",
value: 1
},
{
name: "Airbnb",
value: 17
},
{
name: "Booking.com",
value: 2
},
{
name: "Air Rental",
value: 0
},
{
name: "Airbnb",
value: 17
},
{
name: "Booking.com",
value: 1
},
{
name: "Misterbnb",
value: 2
},
{
name: "Air Rental",
value: 2
},
{
name: "Airbnb",
value: 43
},
{
name: "Booking.com",
value: 23
},
{
name: "Misterbnb",
value: 1
},
{
name: "Air Rental",
value: 1
},
{
name: "Booking.com",
value: 26
},
];
const reducedData = jsonData.reduce((accumulator, currentValue) => {
if (accumulator[currentValue.name]) {
accumulator[currentValue.name] += currentValue.value;
} else {
accumulator[currentValue.name] = currentValue.value;
}
return accumulator;
}, {});
console.log(reducedData);Vous pouvez parcourir une boucle sur chaque élément et fusionner la valeur du numéro si le nom existe déjà.
result = array.reduce(function (r, a) {
r[a.name] = r[a.name] || [];
r[a.name].push(a.number);
return r;
}, Object.create(null));
Exemple avec Lodash, comme mentionné dans mon premier commentaire impressions p>
Pas besoin de Lodash, Réduire Code> Existe depuis JavaScript 1.8.
Je pense que le meilleur moyen est d'utiliser Lodash Réduire Lodash.com/docs/4.17.13#reduc < / a>