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?

2voto

Kyle Zimmer Punkte 300

Wie viele in diesem Thread stimme ich evert zu, dass die offensichtlich altmodische Methode tatsächlich die beste verfügbare Methode ist. Aber zum Spaß möchte ich eine andere nicht empfehlenswerte Methode in bestimmten Situationen vorschlagen, zum Beispiel, wenn Sie bereits Ihr Subset definiert haben und Sie Eigenschaften daraus von einem anderen Objekt kopieren möchten, das ein Superset oder überschneidende Menge seiner Eigenschaften enthält.

let set = { a : 1, b : 2, c : 3 };
let subset = { a : null, b : null };
try {
  Object.assign(Object.seal(subset), set);
} catch (e) {
  console.log('its ok I meant to do that <(^.^)^');
}
console.log(subset);

2voto

arlabbafi Punkte 86

Ich glaube, das ist deine Antwort. (und alle, die danach suchen).

const object = { a: 5, b: 6, c: 7  };
const subset = (({ a, c }) => ({ a, c }))(object);
console.log(subset); // { a: 5, c: 7 }

2voto

elclanrs Punkte 90473

Wie wäre es mit:

function sliceObj(obj) {
  var o = {}
    , keys = [].slice.call(arguments, 1);
  for (var i=0; i

2voto

MSi Punkte 97

Dies funktioniert für mich in der Chrome-Konsole. Gibt es damit ein Problem?

var { color, height } = elmo
var subelmo = { color, height }
console.log(subelmo) // {color: "rot", height: "unbekannt"}

2voto

olivia Punkte 71
  1. Umwandlung von Argumenten in ein Array

  2. Verwende Array.forEach(), um die Eigenschaft auszuwählen

    Object.prototype.pick = function(...args) {
       var obj = {};
       args.forEach(k => obj[k] = this[k])
       return obj
    }
    var a = {0:"a",1:"b",2:"c"}
    var b = a.pick('1','2')  //das Ergebnis wird {1: "b", 2: "c"} sein

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