2012-11-01 161 views
0

我正在使用谷歌可視化圖表api,但我相信這是我做的一些JavaScript錯誤。我填充這個數組號:函數接受1,2,3但不接受字符串'1,2,3'?

visibleRows = []; 

,並使其逗號delimted字符串:

visibleRows.join(','); 

console.logging visibleRows後,這給:

0,1,3 

但是,當我喂visibleRows成該功能的下一行:

pieViewHits.setRows([visibleRows]); 

我得到的錯誤:無效行索引0,1,3應在範圍[0-3] 如果我只是取代所有上面的代碼:

pieViewHits.setRows([0,1,3]); 

它完美!有任何想法嗎?

+0

這不是C,'String'不是'Array' ... – 2012-11-01 11:46:37

+0

visibleRows.join(',');將數組轉換爲逗號分隔的字符串。 –

+0

這不會修改字符串不是數組這一事實。 – 2012-11-01 12:52:36

回答

0

[0,1,3]是包含三個數字

visibleRows.join(',');返回數組逗號分隔的字符串。你沒有把它分配到任何地方,所以它什麼都不做。

[visibleRows]是包含第二數組的數組,其依次包含三個數字。如果在字符串上下文中使用,它將被拼合成逗號分隔的字符串。

該函數需要包含三個數字的數組,而不是包含另一個數組的數組或包含逗號分隔字符串的數組。

只需傳遞數組,而不將其包裝到另一個數組中或將它包裝到另一個數組或join中。

visibleRows = []; 
visibleRows.push(0); 
visibleRows.push(1); 
visibleRows.push(3); 
pieViewHits.setRows(visibleRows); 
+0

非常感謝,你明白了 –

0

visibleRows已經是一個數組了,所以您不必將它作爲[visibleRows](在方括號內)傳遞。

變化

pieViewHits.setRows([visibleRows]); 

pieViewHits.setRows(visibleRows); 

而且我不認爲你需要使用,visibleRows.join(',');

+0

我認爲你是誤解。 visibleRows.join( '');將數組轉換爲逗號分隔的字符串。 –

+0

@Hardworker我明白。 'visibleRows.join(',');'將數組返回給字符串。 'visibleRows'不會被轉換爲字符串,它仍然是一個數組。 –

+0

當您運行該連接時,不可見行將變爲字符串 –