如何将JavaScript对象复制到另一个对象?

时间:2010-05-11 15:25:48

标签: php javascript json object

说我想从一个空白的JavaScript对象开始:

me = {};

然后我有一个数组:

me_arr = new Array();
me_arr['name'] = "Josh K";
me_arr['firstname'] = "Josh";

现在我想将该数组放入对象中,以便我可以使用me.name返回Josh K

我试过了:

for(var i in me_arr)
{
    me.i = me_arr[i];
}

但这没有达到预期的效果。这可能吗?我的主要目标是将此数组包装在JavaScript对象中,以便将其作为JSON传递给PHP脚本(通过AJAX或其他)。

8 个答案:

答案 0 :(得分:6)

由于属性名称也是变量,因此循环应如下所示:

for(var i in me_arr)
{
    me[i] = me_arr[i];
}

要了解有关JSON的更多信息,您可能会发现this article很有用。

答案 1 :(得分:2)

您可能正在寻找像json_encode

这样简单的内容

http://php.net/manual/en/function.json-encode.php

答案 2 :(得分:1)

在上面的代码中,您一遍又一遍地设置me.i属性。要做你在这里描述的内容,试试这个:

for(var i in me_arr)
{
    me[i] = me_arr[i];
}

答案 3 :(得分:1)

真正克隆对象而不用担心引用的最简单方法是

var newObj = JSON.parse(JSON.stringify(oldObj));

非常方便,但如果您的对象中有功能则不可行。

答案 4 :(得分:0)

在已完成的阵列上使用json_encode()

答案 5 :(得分:0)

首先,“me_arr”不应该是一个数组,因为你实际上并没有使用它。

var me_arr = {};
me_arr.name = "Josh K";
me_arr.firstname = "Josh";

或者,更短:

var me_arr = { "name": "Josh K", "firstname": "Josh" };

现在,你的循环几乎是正确的:

for (var key in me_arr) {
  if (me_arr.hasOwnProperty(key))
    me[key] = me_arr[key];
}

我不确定首先有两个变量是什么意思,但无论如何。另外:确保使用var !!

声明变量

答案 6 :(得分:0)

你应该看看JSON in JavaScript。可以下载JSON library,它可以帮助您构建JSON对象。

答案 7 :(得分:0)

你为什么不这样做:

me['name'] = "Josh K";
me['firstname'] = "Josh";


这与

相同
me.name = "Josh K";
me.firstname = "Josh";

阅读这篇关于"associative arrays in JS"的有趣文章。