0

Javascriptの構文を理解していると思うと、次のようなことが起こります...

このコードはjqPlotプラグインページで見ました。

[[]]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)], ...]]

ありがとう

4

4 に答える 4

1

彼らが言った場合、それは括弧の単一のセットになりますdata.push。配列の0番目の要素は配列であるため、それらはそのdata[0].push中に何かを詰め込むために使用します。

なぜ彼らはそれを二重に包む必要があるのか​​、それ以上の文脈がなければわからない。

于 2012-06-20T16:57:07.440 に答える
1

配列に配列を入れているので(配列内に配列dataを作成します)、これを行うと次のことが回避されます。

var data = [];
for (var i=0; i<13; i+=0.5) {
  data.push([i, Math.sin(i)]);
}

を使用[[]]してから実行data[0]する場合、出力時にジャンプする外部配列を使用していません。

于 2012-06-20T16:59:10.217 に答える
1

はい、ネストされた配列です。配列には、値と値の正弦を持つ他のdata配列がプッシュされる配列が含まれています。

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)
];
...
于 2012-06-20T17:00:13.353 に答える
1

ハンターは正しいです-それは他の配列を含む配列の構文です。http://www.quirksmode.org/js/associative.htmlに示すように、これをオブジェクトとして実行することもできます

于 2012-06-20T17:01:59.430 に答える