2012-02-14 21 views
0

外表请:在这个代码添加到complext类型的阵列中的JavaScript

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" 
    ] 
}; 

注意,我想地址这个array.i需要一个代码,另一个元素添加到数据变量。

回答

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"] 
}); 
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这一点。

+0

谢谢,你帮我了 – 2012-02-14 12:21:54

1

语法不正确。应该是:

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

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

两件事情:

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

2)对象中不能有两次相同的密钥。

要将键添加到一个对象使用:

data['cell2'] = [ 
    "2", 
    "text2", 
    "user2", 
    "date2" 
    ]; 
-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); 
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" 
]; 
相关问题