2016-05-12 4 views
-1

Ich möchte dies:den kurzen Weg Erstellen von verschachtelten Objekt

  1. var options.server.socketOptions.keepalive = 120;

, die als Punktnotation bekannt ist.

Aber es funktioniert nicht, wie bekannt. So habe ich dies zu tun:

  1. var options = {}; options.server = {} options.server.socketOptions = {} options.server.socketOptions.keepalive = 120;

ich dies tun könnte statt:

  1. var options = { server: {socketOptions: {keepalive:120}}}

Welches ist das JSON-Format ist

Aber gibt es eine elegantere Art und Weise Verwenden Sie die Punktnotation anstelle der JSON-Methode?

Bei Bedarf würde ich eine kleine Bibliothek verwenden, die fast nur das tut.
Aber ich nicht möchte etwas wie Kaffee oder Unterstrich verwenden.
Preferred Ich möchte wissen, was in der Vanille Weg möglich ist

+0

_var options = {server: {socketOptions: {keepalive: 120}}} _ es ist der kürzeste Weg – Sapotero

+0

Der zweite Weg ist eleganter und lesbarer. Und leider gibt es keine andere Möglichkeit, dies zu erstellen, als die Bracket-Notation zu verwenden. –

+0

Sie können einige andere Eigenschaften/Werte mit Ihnen überschreiben (wie 'option.something' ...) –

Antwort

1

Sie können es direkt in JavaScript nur mithilfe der Objektliterale tun.
Allerdings könnten Sie eine Hilfsfunktion, um das Objekt zu konstruieren:

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 } } } 

prüfen the demo.

Verwandte Themen