我有一个对象数组:
var data = [
{ "name": " Step A ","values": [{"id": "b0", "from": "/Date(1320182000000)/", "to": "/Date(1325573274000)/", "desc": "Id: 0", "label": " Step A1", "customClass": "ganttRed", "dep": "b1"}]},
{ "name": " Step B ","values": [{"id": "b1", "from": "/Date(11/07/2011 )/", "to": "/Date(11/11/2011 )/", "desc": "Id: 1", "label": " Step B1", "customClass": "ganttOrange", "dep": "b2"}]},
{ "name": " Step C ","values": [{"id": "b2", "from": "/Date(1321192000000)/", "to": "/Date(1321500400000)/", "desc": "Id: 2", "label": " Step C1", "customClass": "ganttGreen", "dep": "b3"}]},
{ "name": " Step J ","values": [{"id": "b9", "from": "/Date(1320802400000)/", "to": "/Date(1321994800000)/", "desc": "Id: 9", "label": " Step J1", "customClass": "ganttOrange"}]}
];
我需要在元素“values”中添加其他项。结果的一个例子应该是这样的:
{ "name": " Step A ","values": [{"id": "b0", "from": "/Date(1320182000000)/", "to": "/Date(1325573274000)/", "desc": "Id: 0", "label": " Step A1", "customClass": "ganttRed", "dep": "b1"}, {"id": "b9", "from": "/Date(1320802400000)/", "to": "/Date(1321994800000)/", "desc": "Id: 9", "label": " Step J1", "customClass": "ganttOrange"}]},
我试过使用它,但它不起作用。
data[values].push({"from": "artDate", "to": "EndDate", "id": "ganttOrange"});
请帮忙。
答案 0 :(得分:1)
你有两个问题。首先,您需要将values
括在引号中,以便将其作为字符串文字。如果没有引号,JS会假设您指的是一个名为values
的变量,该变量不存在且会导致错误。或者,您可以使用点表示法,即object.propertyname.push()
。
其次,您需要通过索引访问data
数组,以了解哪个对象包含values
数组到push()
。要推送到数组中的第一个对象,请使用data[0]
,如下所示:
var data = [{
"name": " Step A ",
"values": [{
"id": "b0",
"from": "/Date(1320182000000)/",
"to": "/Date(1325573274000)/",
"desc": "Id: 0",
"label": " Step A1",
"customClass": "ganttRed",
"dep": "b1"
}]
},
{
"name": " Step B ",
"values": [{
"id": "b1",
"from": "/Date(11/07/2011 )/",
"to": "/Date(11/11/2011 )/",
"desc": "Id: 1",
"label": " Step B1",
"customClass": "ganttOrange",
"dep": "b2"
}]
}
];
data[0].values.push({
"from": "artDate",
"to": "EndDate",
"id": "ganttOrange"
});
console.log(data);

答案 1 :(得分:0)
怎么样:
data[index].values.push({"from": "artDate", "to": "EndDate", "id": "ganttOrange"});