2016-07-01 8 views
0

Hier sind 2-Objekte:‚funktional‘ Wert/Schlüssel von einem Objekt entfernen zu einer anderen Objekt Tasten abhängig/Wert

object1: { 
    email: somevalue 
    url: somevalue 
    description: somevalue 
} 

object2: { 
    email: someothervalue 
    url: someothervalue 
} 

Tor Entfernen von object1, irgendeinen Schlüssel/Wert-Paar für jeden Schlüssel, der ‚doesn t existiert auf Objekt2. Objekte können nicht zusammengeführt werden, da die Werte für jedes Objekt sehr unterschiedlich sind.

Dies kann mit traditionellen imperativen Struktur getan werden, aber ich bin auf der Suche nach einer 'funktionalen' Möglichkeit, es zu tun, mit Hilfe von Lodash Bibliothek. Kennen Sie einen Weg, dies zu tun, so wird das Ergebnis sein:

object1: { 
    email: somevalue 
    url: somevalue 
} 

Antwort

2

Mit lodash Sie folgendes tun:

_.pick(object1, Object.keys(object2)) 

Dies erzeugt ein neues Objekt .

+0

Das ist schön, wenn ein neues Objekt in Ordnung ist. – Pointy

3

Sie nicht wirklich lodash brauchen.

Object.keys(object1).forEach(function(key) { 
    if (!(key in object2)) 
    delete object1[key]; 
});