2013-05-17 33 views
1

嗨我不知道这有什么错推新元素对象推元素插入对象的新关联数组

var storeData3 = [ 
{ 'key1' : 'value1' }, 
{ 'key2' : 'value2' }, 
{ 'key3' : 'value3' }, 
{ 'key6' : null}, 
{ 'key7' : ''}, 
{ 'key8' : ""}, 
{ 'key9' : null}, 
{ 'key10' : 'value4'} 
]; //as JSON object 

var i=0; 

storeData3=JSON.stringify(storeData3, function(key, value) 
{if(!value) 
{ 
    i++; 

}; 

return value; 
}); 

JSON.parse(storeData3); 

function insert(name, number) 
{ 
    storeData3.push({name: number});   
} 

if(i>0) insert('keyX','null'); 

的错误关联数组说“类型错误:storeData3.push不是一个函数” 。

+0

当你'storeData3 = JSON.stringify(storeData3,function(key,value)''storeData3'成为一个字符串 – adrianp

+0

因为没有storeData3.push()函数 – Laughing

+0

'JSON.parse(storeData3);'返回解析的值,但你没有做任何事情。 –

回答

1

您正在调用push方法storeData3这是一个字符串。

线

storeData3=JSON.stringify(storeData3, function(key, value) ... 

覆盖与字符串JSON表示该变量。

你要做

storeData3 = JSON.parse(storeData3); 

或使用其他变量。

1

你可能想存储解析JSON回storeData3

JSON.parse(storeData3); 

应该

storeData3 = JSON.parse(storeData3); 
+0

但“不是功能”错误信息没有任何意义。 – Atle

+0

@Atle,它确实; '.stringify'返回一个字符串,'JSON.parse'返回实际的结构,即一个数组。你不能把'.push'转换成字符串。 – Dogbert

+0

我知道,但我不认为错误信息在你看到有什么问题之前解释得太多了。 “storeData3没有方法'推''将解释更多。 – Atle

1

您需要返回JSON.parse功能回到阵storeData = JSON.parse(storeData3);