У меня есть объект, который мог быть любым количеством уровней глубоко и мог иметь любые существующие свойства. Например:
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
}
};
Как я могу осознать такую функцию?
JQuery имеет расширять метод:
https://api.jquery.com/jquery.extend /
просто передают перезаписи как объект, и он объединит два.
Я должен был достигнуть того же самого, но в Node.js... Так, я нашел этот хороший модуль: https://пример www.npmjs.com/package/nested-property
:
var mod = require("nested-property");
var obj = {
a: {
b: {
c: {
d: 5
}
}
}
};
console.log(mod.get(obj, "a.b.c.d"));
mod.set(obj, "a.b.c.d", 6);
console.log(mod.get(obj, "a.b.c.d"));