【发布时间】:2013-09-27 00:44:34
【问题描述】:
我有一个对象,它可以是任意数量的深度并且可以具有任何现有属性。 例如:
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'会发生什么? -
能否提供帮助:*.com/questions/695050/…
-
如果您删除
set()方法并只执行obj.db.mongodb.user = 'root';您会得到您想要的吗?