0
votes

Comment fusionner des données dans un JSON par une propriété de nom dans Typescript

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

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.

merci.


1 commentaires

Je pense que le meilleur moyen est d'utiliser Lodash Réduire Lodash.com/docs/4.17.13#reduc < / a>


4 Réponses :


1
votes

Vous pouvez utiliser dictionnaire dactylographié: xxx

ou si vous devez garder votre structure, vous pouvez faire quelque chose comme: xxx


2 commentaires

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 représente un seul élément à partir du tableau TRAY.



3
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

Exemple avec Lodash, comme mentionné dans mon premier commentaire xxx

impressions xxx


1 commentaires

Pas besoin de Lodash, Réduire Existe depuis JavaScript 1.8.