2017-12-22 7 views
-1

文字列に ' - 'を区切って配列に変換する必要があります。私はそれを分割しようとしましたが、うまくいきません。配列としての分割/プッシュ文字列

avgCreditUsage('[1, 72]-[2, 79]-[3, 81]-[4, 76]-[5, 93]-[6, 81]-[7, 85]-[8, 66]-[9, 66]-[10, 72]-[11, 67]-[12, 72]-[13, 71]-[14, 80]-[15, 94]-[16, 56]-[17, 61]-[18, 81]-[19, 82]-[20, 64]-[21, 74]-[22, 77]-[23, 96]-[24, 83]-[25, 91]-[26, 85]-[27, 72]-[28, 80]-[29, 74]-[30, 70]-[31, 86]'); 
 

 
function avgCreditUsage(creditsPerDOM) { 
 

 
    /* 
 
* LINE CHART 
 
* ---------- 
 
*/ 
 
    //var sin = [ 
 
    //  [gd(2012, 0, 1), 1652.21], [gd(2012, 1, 1), 1742.14], [gd(2012, 2, 1), 1673.77], [gd(2012, 3, 1), 1649.69], 
 
    //  [gd(2012, 4, 1), 1591.19], [gd(2012, 5, 1), 1598.76], [gd(2012, 6, 1), 1589.90], [gd(2012, 7, 1), 1630.31], 
 
    //  [gd(2012, 8, 1), 1744.81], [gd(2012, 9, 1), 1746.58], [gd(2012, 10, 1), 1721.64], [gd(2012, 11, 2), 1684.76] 
 
    // ] 
 

 
    var array = creditsPerDOM.split("-"); 
 
    var sin = [array]; 
 

 
    var line_data1 = { 
 
     data: sin, 
 
     color: "#00c0ef" 
 
    }; 
 
    $.plot("#line-chart", [line_data1], { 
 
     grid: { 
 
      hoverable: true, 
 
      borderColor: "#f3f3f3", 
 
      borderWidth: 1, 
 
      tickColor: "#f3f3f3" 
 
     }, 
 
     series: { 
 
      shadowSize: 0, 
 
      lines: { 
 
       show: true 
 
      }, 
 
      points: { 
 
       show: true 
 
      } 
 
     }, 
 
     lines: { 
 
      fill: false, 
 
      color: ["#3c8dbc", "#f56954"] 
 
     }, 
 
     yaxis: { 
 
      show: true, 
 
     }, 
 
     xaxis: { 
 
      show: true 
 
     } 
 
    }); 
 
    //Initialize tooltip on hover 
 
    $('<div class="tooltip-inner" id="line-chart-tooltip"></div>').css({ 
 
     position: "absolute", 
 
     display: "none", 
 
     opacity: 0.8 
 
    }).appendTo("body"); 
 
    $("#line-chart").bind("plothover", function (event, pos, item) { 
 

 
     if (item) { 
 
      var x = item.datapoint[0].toFixed(2), 
 
       y = item.datapoint[1].toFixed(2); 
 

 
      $("#line-chart-tooltip").html(item.series.label + " of " + x + " = " + y) 
 
       .css({ top: item.pageY + 5, left: item.pageX + 5 }) 
 
       .fadeIn(200); 
 
     } else { 
 
      $("#line-chart-tooltip").hide(); 
 
     } 
 

 
    }); 
 
    /* END LINE CHART */ 
 

 
}

+1

は、第一に、これは何の関係もないことに注意してください、あなたの文字列のJSONのような形式を利用することができますjQueryを使用します。それは純粋なJavascriptです。第二に、あなたのコードはうまくいきます。あなたの質問に編集したスニペットに見られるように。出力が期待どおりでない場合は、必要なものの詳細を教えてください –

+0

Uhhh、 'string.split(...)'は配列を返します。あなたは何を期待していますか? – Amy

+0

配列を返しますが、折れ線グラフは表示されません。今度は完全なコードを含むように質問を編集します – Orion

答えて

1

これは(this fiddleによると、ここに記載されているすべての答えの中で最速である)TaplarのJSONのaproach @に似ていますが、それは、個々のアイテムに変換します。

このアプローチは、パフォーマンスよりも読みやすくなります。

私が正しく理解していれば

var creditsPerDOM = '[1, 72]-[2, 79]-[3, 81]-[4, 76]-[5, 93]-[6, 81]-[7, 85]-[8, 66]-[9, 66]-[10, 72]-[11, 67]-[12, 72]-[13, 71]-[14, 80]-[15, 94]-[16, 56]-[17, 61]-[18, 81]-[19, 82]-[20, 64]-[21, 74]-[22, 77]-[23, 96]-[24, 83]-[25, 91]-[26, 85]-[27, 72]-[28, 80]-[29, 74]-[30, 70]-[31, 86]'; 
 

 
var dataSeries = creditsPerDOM.split('-').map(JSON.parse); 
 

 
console.log(dataSeries);

$.plot('#line-chart', [dataSeries] ...) 
+0

編集した質問をご覧ください。私はあなたのアプローチを試みたが、まだグラフを表示していない。 – Orion

+0

これは部分的に正しいです。あなたのコードは、あなたのソリューションで次のように編集した後で動作します。 var dataSeries = creditsPerDOM.split( ' - ')。map(JSON.parse); var line_data1 = { data:dataSeries、 color: "#00c0ef" }; $ .plot( "#line-chart"、[line_data1]、{.. – Orion

1

あなたはJSON形式に変換してから解析メソッドを使用することができます。

var creditsPerDOM = '[1, 72]-[2, 79]-[3, 81]-[4, 76]-[5, 93]-[6, 81]-[7, 85]-[8, 66]-[9, 66]-[10, 72]-[11, 67]-[12, 72]-[13, 71]-[14, 80]-[15, 94]-[16, 56]-[17, 61]-[18, 81]-[19, 82]-[20, 64]-[21, 74]-[22, 77]-[23, 96]-[24, 83]-[25, 91]-[26, 85]-[27, 72]-[28, 80]-[29, 74]-[30, 70]-[31, 86]'; 
 

 
var array = JSON.parse('['+ creditsPerDOM.split("-").join(",") +']'); 
 

 
console.log(array);

+0

編集した質問をご覧ください。私はあなたのアプローチを試みたが、まだグラフを表示していない。 – Orion

+0

このソリューションは鉱山よりも74%高速です。 – ContinuousLoad

0

あなたは

var creditsPerDOM = '[1, 72]-[2, 79]-[3, 81]-[4, 76]-[5, 93]-[6, 81]-[7, 85]-[8, 66]-[9, 66]-[10, 72]-[11, 67]-[12, 72]-[13, 71]-[14, 80]-[15, 94]-[16, 56]-[17, 61]-[18, 81]-[19, 82]-[20, 64]-[21, 74]-[22, 77]-[23, 96]-[24, 83]-[25, 91]-[26, 85]-[27, 72]-[28, 80]-[29, 74]-[30, 70]-[31, 86]'; 

var all = creditsPerDOM.split(-); 

var final = []; 

all.forEach(function(miniArray){ 
     var arr = JSON.parse(miniArray); // [x, y] 
     final.push(miniArray[0]); 
     final.push(miniArray[1]); 
}) 
+0

私のために働かなかった:(私の編集した質問を完全なコードで見てください – Orion