У мене є об’єкт, який може бути глибиною будь-якої кількості рівнів і мати будь-які існуючі властивості. Наприклад:
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'
?