2013-05-17 34 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);