如何在另一个对象中获取javascript对象的内容?

时间:2013-09-05 07:00:01

标签: javascript

如何在另一个对象中获取java脚本对象的内容? 假设我的变量如下:

var credentials ={
                 "name":userName,
                 "passwd":password
                 } 

var params={
       "Credentials":credentials
       }

我将params作为参数传递给同一个其他函数。在该函数中我有另一个对象pkt,如下所示:

var pkt={
         "name":xxx,
         //XXXX
         }

在XXXX处编码什么,以便我的最终pkt结构应该像:

pkt={
     "name":xxx,
     "Credentials": {
                   "name":userName,
                   "passwd":password
                    } 
    }

我们可能在params中有多个对象,要求是键值对应该相应地出现。 等效的java代码如下:

Iterator iterKeys = params.keySet().iterator();
        while (iterKeys.hasNext())
        {
            String key = (String)iterKeys.next();
            JSONValue value = params.get(key);
            pkt.put(key, value);
        }

感谢。

5 个答案:

答案 0 :(得分:1)

您可以使用$.extend_.extend等库函数:

pkt = $.extend(pkt, params);

否则你可以遍历params并将每个键/值对添加到pkt:

for (var key in params){
    pkt[key] = params[key];
}

使用hasOwnProperty来避免循环祖先成员。

答案 1 :(得分:1)

Javascript对象只是Hashmaps。

    var credentials = {
        "name": "userName",
            "passwd": "password"
    }

    var params = {
        "Credentials": credentials
    }
    var pkt = {
        "name": "xxx",
    }

    for (var property in params) {
    if (params.hasOwnProperty(property)) {
        var value = property;
        pkt[property] = params[property];
    }
}
alert(JSON.stringify(pkt));

你可以在[这个小提琴]看到分配 (http://jsfiddle.net/TfWMy/

答案 2 :(得分:1)

您也可以使用关联数组结构。

var credentials = {
    "name": "userName",
        "passwd": "password"
}


var pkt = {
    "name": "xxx",
}

pkt["Credentials"] = credentials

对此并不十分肯定,但这应该按预期工作。

答案 3 :(得分:0)

这里有两个快速功能,应该做你想要的。第一个将键和值添加到新对象,第二个函数将键和值添加到第一个对象。

var mergeObjectsToNew = function(o1, o2) {
    var r = {};

    for (var key in o1) {
        r[key] = o1[key];
    }

    for (var key in o2) {
        r[key] = o2[key];
    }

    return r;
}

var mergeObjects = function(o1, o2) {
    for (var key in o2) {
        o1[key] = o2[key];
    }

    return o1;
}

答案 4 :(得分:0)

我认为你希望用另一个扩展你的对象。

请遵守代码,我希望这是您需要的。

  var credentials ={
             "name":"",
             "passwd":""
   } 

  var params={
     "Credentials":credentials
   }

var pkt={
  name:"ABC"
};

function Extends(param1,param2){
  var object = $.extend({}, param1, param2);
  console.log(object);
}
Extends(params,pkt);

请找下小提琴

Fiddle