У меня есть объект, который может иметь любое количество уровней глубины и может иметь любые существующие свойства. Например:
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
}
};
Как я могу реализовать такую функцию?
set('foo', 'bar'); set('foo.baz', 'qux');
, гдеfoo
сначала держится, аString
потом становитсяObject
? Что происходит'bar'
?