【问题标题】:How to add new key value pair into existing object如何将新的键值对添加到现有对象中
【发布时间】:2016-07-27 09:28:45
【问题描述】:

我有一个简单的函数:

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

【问题讨论】:

    标签: jquery object


    【解决方案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'
    });

    【讨论】:

      【解决方案2】:

      您可以将其设置为字符串,就像在您的示例中一样,但是当您将对象放入带有[obj] 的数组中时,您也必须选择索引0

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

      或者你可以把它作为一个属性来做:

      list.data[0].limitstart = 24;
      

      Working example.

      对于您的预期输出,您不必将 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]?
      • 因为您将obj 放在带有[obj] 的数组中([] 周围会这样做)。因为obj 是该新数组中的第一个条目,所以您必须通过索引0 选择obj。 @Keren
      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2021-09-06
      相关资源
      最近更新 更多