So ordnen Sie mehr als eine Eigenschaft aus einem Array von Objekten zu

Lesezeit: 2 Minuten

Benutzer-Avatar
Benutzer144271

Ich habe ein Array von Object wie folgt:

var obj = [
  {a: 1, b: 5, c: 9},
  {a: 2, b: 6, c: 10},
  {a: 3, b: 7, c: 11},
  {a: 4, b: 8, c: 12}
];

Ich weiß, wie man ein einzelnes Objekt mit erhält Array.map() so was.

var result = obj.map(x=>x.a)

Dies wird mir folgendes Ergebnis geben

[1, 2, 3, 4]

Aber ich möchte Ergebnis wie folgt:

[
  {a: 1, b: 5},
  {a: 2, b: 6},
  {a: 3, b: 7},
  {a: 4, b: 8}
]

Kurz gesagt, aus einem Array von Objekten möchte ich nur wenige Felder (mehr als eines) auswählen.

Wie kann ich das machen?

  • Erstellen Sie eine neue Schleife, um das Array mit ausgewählten Elementen zu filtern

    – Azad

    11. Dezember 2018 um 6:56 Uhr

Sie können verwenden .map() mit Objektdestrukturierung:

let data = [
    {a:1,b:5,c:9}, {a:2,b:6,c:10},
    {a:3,b:7,c:11}, {a:4,b:8,c:12}
];
          
let result = data.map(({ a, b }) => ({a, b}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Benutzen map():

var data = [
  {a:1,b:5,c:9},
  {a:2,b:6,c:10},
  {a:3,b:7,c:11},
  {a:4,b:8,c:12}
];
          
let modified = data.map(obj => ({a: obj.a, b: obj.b}))

console.log(modified);

Oder wenn Sie lieber destrukturieren:

var data = [
    {a:1,b:5,c:9}, 
    {a:2,b:6,c:10},
    {a:3,b:7,c:11}, 
    {a:4,b:8,c:12}
];
          
let modified = data.map(({ a, b }) => ({a, b}));

console.log(modified);

Benutzer-Avatar
Prasad Telkikar

Sie können ein benutzerdefiniertes Objekt mit erforderlichen Eigenschaften zurückgeben, indem Sie verwenden map()

var obj = [{a:1,b:5,c:9},
           {a:2,b:6,c:10},
           {a:3,b:7,c:11},
           {a:4,b:8,c:12}
          ];
          
          
let op = obj.map(e => {
   return { a:e.a, b: e.b };
})        

console.log(op);

Benutzer-Avatar
twb

In Ihrer Lösung für die Produktion [1,2,3,4], x.a ist keine Mikrosyntax, sondern ein vollwertiger JavaScript-Ausdruck. Sie können es also einfach durch das JavaScript ersetzen, um ein neues Objekt mit den gewünschten Eigenschaften zu erstellen.

var result = obj.map(x=>{a: x.a, b: x.b});

… fast. Die zusätzliche Komplikation ist, dass a { nach einer => wird als Beginn eines Funktionskörpers interpretiert, nicht als Beginn eines Objektliterals. Sie können dies vermeiden, indem Sie das Objektliteral einfach in sonst-noop-Klammern einschließen.

var result = obj.map(x=>({a: x.a, b: x.b}));

1010430cookie-checkSo ordnen Sie mehr als eine Eigenschaft aus einem Array von Objekten zu

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

Privacy policy