JavaScript数组 - 推送多维数组

时间:2015-11-19 07:18:32

标签: javascript

我有一个这样的数组:

message_list = [
    {
        "Main_body": "test msg",
        "emp_name": "test",
        "emp_salary": "5000 USD"
    }
]

其长度(例如message_list.length)为1。

现在我有另一个这样的数组:

added_user_data = [
    {
        "PostSharedLog": {
            userids: "2,4,5"
        },
        "created": "2123123"
    }, 
    {
        "PostSharedLog": {
            userids: "3,1"
        },
        "created": "2123147"
    }
]

它的长度(added_user_data.length)是2。

我想将上面的数组added_user_data推送到message_list

我尝试在for循环中执行此操作,现在因为message_list的长度为1,对于第二次迭代,由于message_list[1]不存在而不会推送值未定义。但即使它不存在,我仍然想创建message_list[1]

如果我这样做:

for(var k =0;<count(added_user_data.length);k++)
{
      message_list[k].PostSharedLog = added_user_data[k].PostSharedLog ; 
}

它只追加数组added_user_data中的第一行,并在我打印出message_list时给出这样的输出:

[{ 
        "Main_body": "test msg",
        "emp_name": "test",
        "emp_salary": "5000 USD", 
        "PostSharedLog": {
            userids: "2,4,5"
        } }]

第二次迭代根本不附加任何内容。

我想看下面的内容:

[{ 
            "Main_body": "test msg",
            "emp_name": "test",
            "emp_salary": "5000 USD", 
            "PostSharedLog": {
                userids: "2,4,5"
            },
            "PostSharedLog": {
                userids: "3,1"
            } 

 }]

1 个答案:

答案 0 :(得分:0)

JSON对象不能有重复的密钥。

JSON对象基本上是Map keysvalues。对象中的每个key必须是唯一的。

JSON无效

您发布的所需结果永远不会存在,因为PostSharedLog只能存在一次。再次设置只会更改值。

同样userids不是有效的JSON密钥,它应始终包含"

任何JSON linter都会告诉您原因。

{ 
    "Main_body": "test msg",
    "emp_name": "test",
    "emp_salary": "5000 USD", 
    "PostSharedLog": {
        userids: "2,4,5"
    },
    "PostSharedLog": {
        userids: "3,1"
    } 
}

你可能需要做的是:

{ 
    "MainBody": "test msg",
    "EmployeeName": "test",
    "EmployeeSalary": { "amount": 5000, "currency": "USD" }, 
    "PostSharedLog": {
        "UserIds": [2,4,5,3,1]
    }
}

注意:

  1. 你的名字不一致。真?它们中的每一个都是不同的格式
  2. 不要缩写。
  3. 不要在String类型中存储多值字段,请使用真实的Array[1,2,3,4]代替"1,2,3,4"
  4. 不要在String类型中存储mutlivalue字段,请使用真实的Object{ amount: 5000, currency: "USD" }代替"5000 USD"