Ho due oggetti JavaScript:valori rimozione di default da un oggetto
var a = {
x: 1,
y: {
faz: 'hello',
baz: ''
},
z: [1, 2]
};
var defaults = {
x: 2,
y: {
faz: '',
baz: ''
},
z: [1, 2]
};
voglio tenere solo i campi di a
che sono diversi dal default:
a = remove_defaults(a, defaults); // <---- i need this fnc
{
x: 1,
y: {
faz: 'hello'
}
}
L'obiettivo è per rimuovere i valori predefiniti da un oggetto che funge da stato (via URL). Lo stato può avere campi nidificati, quindi un confronto superficiale non è sufficiente. I valori delle foglie sono tutti primitivi (numero, stringa, bool).
(questo è un po 'come il contrario di underscore.js
s' _.defaults()
metodo)
Qual è il modo migliore per raggiungere questo obiettivo?
La soluzione può utilizzare underscore.js
se questo aiuta, ma non jquery
.
iterare in modo ricorsivo sulle proprietà e confrontarne i valori. Non esiste un metodo integrato. –