У меня есть объект, который может быть любым количеством уровней в глубину и может иметь любые существующие свойства. Например:
var obj = {
db: {
mongodb: {
host: 'localhost'
}
}
};
На этом я хотел бы установить (или перезаписать) свойства следующим образом:
set('db.mongodb.user', 'root');
// or:
set('foo.bar', 'baz');
Если строка свойств может иметь любую глубину, а значение может быть любым типом/вещью.
Объекты и массивы как значения не должны объединяться, если ключ свойства уже существует.
Предыдущий пример привел бы к следующему объекту:
var obj = {
db: {
mongodb: {
host: 'localhost',
user: 'root'
}
},
foo: {
bar: baz
}
};
Как я могу реализовать такую функцию?