在javascript中添加复杂类型的数组

时间:2012-02-14 11:36:42

标签: javascript arrays

请查看此代码:

var data = {                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
]};

这是一个只包含1个元素的数组,现在我需要一个代码来将以下值设置为数据变量:

data = {                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
    ]
},
{                                
    "cell": [
    "2",
    "text2",
    "user2",
    "date2"
]};

我使用以下代码,但它不起作用。

var data = {                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
    ]
};

data += {                                
    "cell": [
    "2",
    "text2",
    "user2",
    "date2"
    ]
};

注意,我想 ADD 到这个数组。我需要一个代码来向数据变量添加另一个元素。

6 个答案:

答案 0 :(得分:2)

那些不是数组,它们是对象文字。所以你想要做的就是将两个对象合并在一起。

请参阅How can I merge properties of two JavaScript objects dynamically?

for (var attrname in obj2) { obj1[attrname] = obj2[attrname]; }
     

如果你正在使用一个框架来破坏你的原型   你必须得到像hasOwnProperty这样的支票才能获得更多的荣誉   代码将适用于99%的案例。

     

示例功能:

/**
 * Overwrites obj1's values with obj2's and adds obj2's if non existent in obj1
 * @param obj1
 * @param obj2
 * @returns obj3 a new object based on obj1 and obj2
 */
function merge_options(obj1,obj2){
  var obj3 = {};
  for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
  for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
  return obj3;
}

如果你正在使用jQuery,你可以使用$.extend

答案 1 :(得分:1)

语法不正确。应该是:

var data = [{                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
]}]; 

data.push( {.....your new object....});

答案 2 :(得分:1)

data是一个对象。它不是一个数组。如果要添加它,则需要为其上的新属性赋值。

var data = {
    "cell": ["1", "text1", "user1", "date1"]
};
data.cell2 = ["2", "text2", "user2", "date2"];

也许您希望data成为一个对象数组?

var data = [{
    "cell": ["1", "text1", "user1", "date1"]
}];

data.push({
    "cell": ["2", "text2", "user2", "date2"]
});

答案 3 :(得分:1)

两件事:

1)这不是一个数组,它是一个对象。

2)你不能在一个对象中拥有两次相同的密钥。

要向对象添加密钥,请使用:

data['cell2'] = [
    "2",
    "text2",
    "user2",
    "date2"
    ];

答案 4 :(得分:1)

如果从

中查看数据对象
var data = {                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
]};

你会看到它有一个属性单元,它是一个包含4个元素的数组。如果你想要添加另一个单元格,那么你可以使数据对象成为一个数组:

var data = [{                                
    "cell": [
    "1",
    "text1",
    "user1",
    "date1"
]}]; 

data.push( {"cell": ["2","text2","user2","date2"]});

或者您可以向数据对象添加另一个单元格属性,但它需要一个不同的键,否则您将覆盖当前的单元格属性。

data['cell2'] = [
"2",
"text2",
"user2",
"date2"
];

答案 5 :(得分:-1)

您应该像这样设置数据

data = [{                                
       "cell": [
       "1",
       "text1",
       "user1",
       "date1"
       ]
   },
   {                                
       "cell": [
       "2",
       "text2",
       "user2",
       "date2"
       ]
   }];

要为数据添加新单元格,请按照这样做

var dt = {                                
    "cell": [
    "3",
    "text3",
    "user3",
    "date3"
    ]
};
data.splice(data.length,0,dt);