Konvertieren Sie das Objekt in ein Array von Schlüsselwertobjekten wie `{ name: “Apple”, value: “0.6” }`

Lesezeit: 2 Minuten

Konvertieren Sie das Objekt in ein Array von Schlusselwertobjekten wie
Ironman

Ich habe ein Objekt wie dieses:

const total = {
    "Apple": 0.6,
    "Banana": 0.6,
    "Orange": 1,
    "Grapes": 0.4,
    "Pineapple": 0.4
  };

Jetzt möchte ich es in ein Array von Schlüssel-Wert-Objekten konvertieren, wobei jedes Objekt denselben Satz von zwei Eigenschaften hat, "name" und "value"die den Schlüssel bzw. den Wert jeder Eigenschaft des ursprünglichen Objekts enthalten:

[
  { "name": "Apple", "value": 0.6 },
  { "name": "Banana", "value": 0.6 },
  { "name": "Orange", "value": 1 },
  { "name": "Grapes", "value": 0.4 },
  { "name": "Pineapple", "value": 0.4 }
]

  • Wenn Sie nach der Umkehrung suchen: Wie konvertiere ich ein Array von Objekten in ein Objekt in JavaScript?.

    – Sebastian Simon

    1. Dezember 2021 um 1:41 Uhr

1647167705 621 Konvertieren Sie das Objekt in ein Array von Schlusselwertobjekten wie
Suren Srapjan

Sie können verwenden Array#map Funktion auf den Objekttasten und erstellen Sie Ihre Objekte mit der gewünschten Form.

const total = { 
    'Apple': 0.6,
    'Banana': 0.6,
    'Orange': 1,
    'Grapes': 0.4,
    'Pineapple': 0.4 
};
              
const array = Object.keys(total)
                    .map(key => ({ name: key, value: total[key] }))
                    .sort((f, s) => f.value - s.value);

console.log(array);

Wenn du benutzt ES7 oder höher können Sie ersetzen Objekt#Schlüssel mit Objekt#Einträge. Verwenden Sie auch Objektdestrukturierung in der Parameterliste zu bekommen name und value separat.

const total = { 
    'Apple': 0.6,
    'Banana': 0.6,
    'Orange': 1,
    'Grapes': 0.4,
    'Pineapple': 0.4 
};
              
const array = Object.entries(total)
                    .map(([name, value]) => ({ name, value }))
                    .sort((f, s) => f.value - s.value);;

console.log(array);

  • Wirklich toll und wirklich schnell. Nun, wenn ich das Ergebnis im Bestellformat mit abnehmendem Wert haben möchte, wie kann ich das dann erreichen?

    – Ironman

    18. Dezember 2017 um 6:46 Uhr

  • Sie müssen hinzufügen sort Funktion in die Kette.

    – Suren Srapjan

    18. Dezember 2017 um 16:38 Uhr

 const result = Object.entries(total).map(([name, value]) => ({name, value}));

  • Eine kleine Erklärung geht einen langen Weg.

    – cs95

    18. Dezember 2017 um 8:51 Uhr

Array#reduce kann auch verwendet werden, um “Objekt im Schlüsselwertformat in Array einzufügen”:

var total = { 'Apple': 0.6, 'Banana': 0.6, 'Orange': 1, 'Grapes': 0.4, 'Pineapple': 0.4 };

var objArr = Object.entries(total)
                   .reduce((accumulator, [name, value]) => {
                      return accumulator.concat({name: name, value: value});  // creates an array of objects
                     }, [])
                   .sort((a, b) => b.value - a.value);  // sorting in descending order

console.log(objArr);

Für weitere Informationen lesen Sie Object#entries, Array#sort und object destructuring.

997230cookie-checkKonvertieren Sie das Objekt in ein Array von Schlüsselwertobjekten wie `{ name: “Apple”, value: “0.6” }`

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy