2016-04-13 33 views
5

Esiste un modo per copiare un oggetto con lodash, ma non tutte le proprietà. L'unico modo che conosco è manualmente copiando l'Immobiliare di proprietàlodash: oggetto di copia profonda ma non tutte le proprietà

voluto ad esempio:

var obj = { 
    a: 'name', 
    b: [1,2,3], 
    c: { 
     z: 'surname', 
     x: [] 
    }, 
    d: { 
     y: 'surname2', 
     w: [] 
    } 
}; 

e il risultato essere come

var copy_obj = { 
    b: [1,2,3], 
    c: { 
     z: 'surname', 
     x: [] 
    } 
}; 

Edit: finalmente ho optato per:

var blacklist = ['a','d']; 
_.cloneDeep(_.omit(obj, blacklist)); 
+1

Esaminare "pick" e "omettere". – elclanrs

+1

Se il problema è stato risolto da soli, inserirlo come risposta, non come una modifica alla domanda. Se vuoi, puoi accettare quella risposta. –

risposta

-4
var blacklist = ['a','d']; 
_.cloneDeep(_.omit(obj, blacklist)); 
+2

Perché hai copiato la mia risposta parola per parola e contrassegnata come corretta? – Chris

+0

@Chris: Per essere onesti, [la tua risposta] (https://stackoverflow.com/a/36612253/1430156) era del 14 aprile, mentre l'OP già scriveva questo stesso codice (come [modifica alla domanda] (https://stackoverflow.com/revisions/36604403/2)) il 13 aprile, probabilmente prima di copiare * quello * snippet in una nuova risposta (come suggerito da [un commentatore] (https://stackoverflow.com/questions/36604403 # comment60825938_36604403)). –

+0

Fiera, sembra strano. Era curioso se ci fosse qualcosa che ha trovato nella sua risposta che lo rende più corretto - per i futuri lettori di questa domanda/risposta – Chris

2

È possibile utilizzare il pick Funzione:

_.pick(obj, 'b', 'c') 
+0

Supponendo che l'OP desideri una copia profonda, come suggerito dal titolo della domanda, questo non lo farà. –

1

È possibile utilizzare il secondo parametro per JSON.stringify per fare questo.

JSON.parse(JSON.stringify(obj, ['b', 'c'])) 
0

È possibile utilizzare una combinazione di assegnare e raccogliere

Object.assign(copy_obj, _.pick(obj, ['b', 'c'])); 

In questo modo se copy_obj ha altre proprietà che non le sovrascrivono.

Problemi correlati