1

こんにちは私はハイチャートを使用していて、チャートにフィードするためにその場で配列の配列を作成しようとしています。

配列の配列を作成する方法を理解しましたが、出力形式はhighchartsが提供したいものではありません。

出力が次のようになる配列をその場で生成しようとしています:

[[10、3500]、[11、3400]、[12、3300]、[13、3200]、[14、3100]、[15、3000]、[16、2900]、[17、2800]、[ 18、2700]、[19、2600]、[20、2500]]

しかし、私が得るものはこれです:

10,3500,11,3400,12,3300,13,3200,14,3100,15,3000,16,2900,17,2800,18,2700,19,2600,20,2500

フォーマットが正しくなるように、Javascriptで角かっこを出力するにはどうすればよいですか?

<html>
<head>

  Max Price: <input id="max_price_input" type="number" value=3500><br>
  Min Price: <input id="min_price_input" type="number" value=2500><br>
  Max People: <input id="max_people_input" type="number" value=20><br>
  Min People: <input id="min_people_input" type="number" value=10><br>


<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script>

chart = void 0;

$(document).ready(function() {
    var max_price, min_price, max_people, min_people, chart;
    max_price=document.getElementById("max_price_input").value;
    min_price=document.getElementById("min_price_input").value;
    max_people=document.getElementById("max_people_input").value;
    min_people=document.getElementById("min_people_input").value;

    var price_change = max_price - min_price;
    var steps = max_people - min_people;
    var price_step = price_change*1.0/steps;
    var price = max_price;
    var people = 10;
    var priceArray = [];

        for (var i=0;i<=steps;i++)
    { 
        priceArray[i] = [];
                priceArray[i][0] = [people, price];
        price-=price_step;
        people+=1
    }

document.getElementById("price_steps").innerHTML=priceArray

  return chart = new Highcharts.Chart({

    chart: {
      renderTo: "chart",
      type: "spline"
    },
    title: {
      text: "Dynamic Price Chart"
    },
    xAxis: {
      title: {
        text: "People"
      }
    },
    yAxis: {
      plotLines: [
        {
          color: "#FF0000",
          width: 2,
          value: 0
        }
      ],
      title: {
        text: "Price"
      }
    },
    tooltip: {
      formatter: function() {
        return "People: " + this.x + "<br/> Price: " + this.y;
      }
    },
    series: [
      {
        name: "Price",
        data: priceArray
      }
    ]
  });
});

</script>
4

1 に答える 1

2

アレイを正しく作成していません:

// [[[1, 2]]]
var arr = [];
arr[0] = [];
arr[0][0] = [1, 2];

代わりにあなたが望む:

for (var i = 0; i <= steps; i++) {
    priceArray[i] = [people, price];
    price -= price_step;
    people += 1
}

コードには他にもいくつか問題があります。たとえば、次のとおりです。

あなたのhtml要素は本文に入るはずです。

これは実際の値を表示しません:

document.getElementById("price_steps").innerHTML=priceArray

代わりに、次を試してください。

JSON.stringify(priceArray);
于 2012-11-04T23:59:30.070 に答える