创建嵌套对象的一小段路
问题描述:
我想这一点:创建嵌套对象的一小段路
var options.server.socketOptions.keepalive = 120;
这是被称为点符号。
但它不起作用,众所周知。 所以我要做到这一点:
var options = {}; options.server = {} options.server.socketOptions = {} options.server.socketOptions.keepalive = 120;
var options = { server: {socketOptions: {keepalive:120}}}
我能做到,而不是这样的:
这是JSON格式
但是有没有更优雅的方式使用点符号而不是JSON方式?
如果有必要,我会使用一个几乎只有这样的小库。
但我不要想要使用类似咖啡或下划线。
首选我想知道什么是可能的香草方式
答
您可以直接在JavaScript中使用对象文字。
但是你可以使用一个辅助函数来构造对象:
function build(props, value) {
return props.split('.').reverse().reduce(function(acc, key, index) {
if (index === 0) {
acc[key] = value;
return acc;
}
var obj = {};
obj[key] = acc;
return obj;
}, {});
}
var options = build('server.socketOptions.keepalive', 120);
console.log(obj); // prints { server: {socketOptions: { keepalive:120 } } }
检查the demo。
_var options = {server:{socketOptions:{keepalive:120}}} _这是最短的方式 – Sapotero
第二种方式更优雅,更易读。可悲的是,除了使用括号表示之外,没有其他方式可以创建它。 –
你可以用你的方法覆盖一些其他的属性/值(比如'option.something' ...) –