2016-07-27 76 views
4

我有一個簡單的函數:如何添加新鍵值對到現有的對象

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

我嘗試這樣做:

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

預期輸出:

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

回答

1

可以設置它作爲字符串,如你的例子,但是當你把對象放在一個數組中[obj],你必須選擇索引0太:

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

或者你也可以做到這一點作爲一個屬性:

list.data[0].limitstart = 24; 

Working example.

爲了您exprected輸出你不必把obj一個數組:

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

它的作品,你能解釋一下,爲什麼必須使用[0]? – 112233

+0

因爲你把'obj'放在一個數組中['obj]'(*'']'將會做這個*)。因爲'obj'是新數組中的第一個條目,所以必須通過索引'0'選擇'obj'。 @Keren – eisbehr

1

要得到輸出根據您的需要,你不需要把opt到一個數組,你只需要一個屬性添加到它,就像這樣:

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' 
 
});

相關問題