2012-11-01 57 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

当您运行该连接时,不可见行将变为字符串 –