就在我认为我对Javascript的语法有所了解的时候,我遇到了类似这样的事情......
我在jqPlot plugin页面上看到了这段代码。
javascript中的[[]]
是什么类型的数组?嵌套数组?我以为我理解了双括号,但在评论文中,我不明白为什么会有一个额外的设置(下面的问题)。
$(document).ready(function(){
// Our data renderer function, returns an array of the form:
// [[[x1, sin(x1)], [x2, sin(x2)], ...]]
var sineRenderer = function() {
var data = [[]];
for (var i=0; i<13; i+=0.5) {
data[0].push([i, Math.sin(i)]);
}
return data;
};
为什么在这个注释声明中有一组额外的括号(最外面的一组)?
[[[x1, sin(x1)], [x2, sin(x2)], ...]]
由于
答案 0 :(得分:1)
如果他们说data.push
,那将是一组括号。由于数组的第0个元素是一个数组,因此它们使用data[0].push
填充其中的内容。
为什么他们需要双重包装,没有更多的背景就不知道。
答案 1 :(得分:1)
由于您在data
数组(在数组中创建数组)中放入数组,因此这样可以避免:
var data = [];
for (var i=0; i<13; i+=0.5) {
data.push([i, Math.sin(i)]);
}
当您使用[[]]
然后执行data[0]
时,您没有使用外部数组,当您输出它时会跳转。
答案 2 :(得分:1)
是的,它是一个嵌套数组。 data
数组包含一个数组,其中推送了值为value和值正弦的其他数组。
AFAIK,jQPlot插件将使用data
中的每个数组来打印新图表。你可以做例如
function graph(fn, from, to, gap) {
// creates an array with points
var res = [];
for (var i=from; i<to; i+=gap) {
res.push([i, fn(i)]);
}
return res;
}
var data = [
graph(Math.sin, 0, 13, 0.5),
graph(Math.cos, 0, 13, 1)
];
...
答案 3 :(得分:1)
Hunter是正确的 - 它是包含其他数组的数组的语法。您还可以将此作为对象进行查看,如下所示:http://www.quirksmode.org/js/associative.html。