2016-07-27 15 views
4

ich eine einfache Funktion hinzuzufügen:Wie neues Schlüsselwertpaar in bestehendes Objekt

function pagination(opt, limit){ 
    console.log(opt); 
    //logs out this-> [Object { limit="2", layout="getConversations"}] 

    if (typeof opt === 'object') { 
     var list = { 
      data: [opt] 
     } 
     list.data['limitstart'] = 24; //undefined 
     console.debug(data); //here it should list three key value pairs including limitstart which just added 
    } 
} 

ich das versucht:

list.data.push({ 'limitstart': 24 }); //creates another object. 

erwartete Ausgabe:

[Object { limit="2", layout="getConversations", limitstart=24}] 

Antwort

1

Sie können festlegen, es als String, wie in Ihrem Beispiel, aber wie Sie das Objekt in ein Array mit [obj] setzen, müssen Sie den Indexauswählen Auch:

list.data[0]["limitstart"] = 24; 

Oder Sie können es als eine Eigenschaft tun:

list.data[0].limitstart = 24; 

Working example.

Für Ihre exprected Ausgang Sie die obj nicht in einem Array setzen müssen:

var obj = {limit: '2', layout: 'getConversations'}; 
var list = {data: obj}; 

list.data.limitstart = 24; 
console.debug(list.data); // you have to log 'list.data' not 'data' 
+0

es funktioniert, könnten Sie bitte erklären , warum muss [0] verwendet werden? – 112233

+0

Weil Sie das 'obj' in ein Array mit' [obj] 'setzen (* das' [] 'ringsum macht das *). Da 'obj' der erste Eintrag in diesem neuen Array ist, müssen Sie das' obj' durch den Index '0' auswählen. @Keren – eisbehr

1

Um zu bekommen die Ausgabe, wie Sie benötigen Sie brauchen nicht opt in einem Array zu platzieren, müssen Sie einfach eine Eigenschaft, um es, wie dies hinzuzufügen:

function pagination(opt, limit) { 
 
    console.log('input', opt); 
 

 
    if (typeof opt === 'object') { 
 
    opt.limitstart = 24; // add the property here 
 
    } 
 

 
    console.log('output', opt); 
 
} 
 

 
pagination({ 
 
    limit: '2', 
 
    layout: 'getConversations' 
 
});

Verwandte Themen