768 Stimmen

Wie man eine Untermenge der Eigenschaften eines JavaScript-Objekts erhält

Sagen wir, ich habe ein Objekt:

elmo = { 
  color: 'rot',
  annoying: true,
  height: 'unbekannt',
  meta: { one: '1', two: '2'}
};

Ich möchte ein neues Objekt mit einem Teil seiner Eigenschaften erstellen.

 // Pseudocode
 subset = elmo.slice('color', 'height')

 //=> { color: 'rot', height: 'unbekannt' }

Wie kann ich das erreichen?

6voto

Kashif Nazar Punkte 16391

Verwenden Sie die pick-Methode der Lodash-Bibliothek, wenn Sie diese bereits verwenden.

var obj = { 'a': 1, 'b': '2', 'c': 3 };

_.pick(obj, ['a', 'c']);

// => { 'a': 1, 'c': 3 }

https://lodash.com/docs/4.17.10#pick

5voto

ADJenks Punkte 2338

Verwendung des "with"-Statements mit verkürzter Objektliteral-Syntax

Bisher hat niemand diese Methode demonstriert, wahrscheinlich weil sie schrecklich ist und du es nicht tun solltest, aber ich fühle mich verpflichtet, sie aufzulisten.

var o = {a:1,b:2,c:3,d:4,e:4,f:5}
with(o){
  var output =  {a,b,f}
}
console.log(output)

Pro: Du musst die Eigenschaftsnamen nicht zweimal eingeben.

Contra: Das "with"-Statement wird aus vielen Gründen nicht empfohlen.

Fazit: Es funktioniert gut, aber benutze es nicht.

4voto

Arthur Ronconi Punkte 1962

Nur eine weitere Möglichkeit...

var elmo = { 
  color: 'rot',
  irritierend: true,
  höhe: 'unbekannt',
  meta: { eins: '1', zwei: '2'}
}

var subset = [elmo].map(x => ({
  color: x.color,
  height: x.height
}))[0]

Du kannst diese Funktion mit einem Array von Objekten verwenden =)

4voto

Wenn Sie mehr Eigenschaften behalten möchten als die, die Sie entfernen möchten, könnten Sie die Rest-Parameter-Syntax verwenden:

const obj = {
  a:1,
  b:2,
  c:3,
  d:4
};
const { a, ...newObj } = obj;
console.log(newObj); // {b: 2, c: 3, d: 4}

3voto

Timar Ivo Batis Punkte 1689

Um auf andere esoterische Weise hinzuzufügen, funktioniert das auch:

var obj = {a: 1, b:2, c:3}
var newobj = {a,c}=obj && {a,c}
// {a: 1, c:3}

aber du musst die Prop-Namen zweimal schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X