我有一个对象,它的深度可以是任意数量的,并且可以具有任何现有属性。例如:
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
}
};
我怎样才能实现这样的功能?
原文由 John B. 发布,翻译遵循 CC BY-SA 4.0 许可协议
此函数使用您指定的参数,应添加/更新
obj
容器中的数据。请注意,您需要跟踪obj
架构中的哪些元素是容器,哪些是值(字符串、整数等),否则您将开始抛出异常。