2017-11-12 17 views
-2

要素を作成して多次元配列にプッシュするにはどうすればよいですか?私は、各サブアレイ内の最初の値は、サブの右側に、0,1,2、上記のような等値をインクリメントする、今javascriptの要素を多次元配列に動的に移動

var sourceData = [ 
       [0, 99.75], [1, 99.77], 
       [2, 99.78], [3, 99.84], 
       [4, 99.82], [5, 99.82], 
       [6, 99.76], [7, 99.78], 
       [8, 99.8], [9, 99.65], 
       [10, 99.94], [11, 99.8] 
      ]; 

: 私はこのようなアレイを実現したいですjsonオブジェクトから配列を取得する必要があります。例:

{ 
    "closingbal": "39.00", 
    "customer_id": "33", 
    "monthlycashInfow": 658, 
    "monthlycashOutfow": 674, 
    "monthyear": "2017-01", 
    "netcashflow": -16, 
    "openingbal": "3.00", 
    "ratioinfoutflow": 0.4286, 
    "ratioinfoutflowamount": 0.9763, 
    "transnoInflow": 3, 
    "transnoOutflow": 7 
}, 
{ 
    "closingbal": "130.00", 
    "customer_id": "33", 
    "monthlycashInfow": 4970, 
    "monthlycashOutfow": 4949, 
    "monthyear": "2016-12", 
    "netcashflow": 21, 
    "openingbal": "19.00", 
    "ratioinfoutflow": 0.4444, 
    "ratioinfoutflowamount": 1.0042, 
    "transnoInflow": 12, 
    "transnoOutflow": 27 
}, 
{ 
    "closingbal": "1064.00", 
    "customer_id": "33", 
    "monthlycashInfow": 3030, 
    "monthlycashOutfow": 4113, 
    "monthyear": "2016-11", 
    "netcashflow": -1083, 
    "openingbal": "0.00", 
    "ratioinfoutflow": 0.24, 
    "ratioinfoutflowamount": 0.7367, 
    "transnoInflow": 6, 
    "transnoOutflow": 25 
} 

右側に「netcashflow」という値が必要です。

どうすればこの問題を解決できますか?どんな助けもありがとう。

これは私が試したものです:

var values = []; 
      $.each(json, function (key, value) { 
       if (key == 'cashflows') { 
        for(var i = 0; i < 12; i++) { 
         if(!values[i]) 
          values[i] = []; 
         for(var j = 0; j < json.cashflows.cashflow.length; j++) { 
          var row = json.cashflows.cashflow[j]; 
          values.push(i+", " +row['netcashflow']); 
          //values[i].push(); 
         } 
        } 
       } 
      }); 
+3

これまでに何を試みましたか? – whodini9

+0

@ whodini9私が試したことで質問を更新しましょう。 – Mathenge

答えて

1

はリクエスト形式で新しい配列を作成するために、Array#mapを使用してください。アレイ#マップに渡された2番目のパラメータは、インクリメント値として使用することができ、現在のインデックス、次のとおりです。@Ori通りの方法に

var data = [{"closingbal":"39.00","customer_id":"33","monthlycashInfow":658,"monthlycashOutfow":674,"monthyear":"2017-01","netcashflow":-16,"openingbal":"3.00","ratioinfoutflow":0.4286,"ratioinfoutflowamount":0.9763,"transnoInflow":3,"transnoOutflow":7},{"closingbal":"130.00","customer_id":"33","monthlycashInfow":4970,"monthlycashOutfow":4949,"monthyear":"2016-12","netcashflow":21,"openingbal":"19.00","ratioinfoutflow":0.4444,"ratioinfoutflowamount":1.0042,"transnoInflow":12,"transnoOutflow":27},{"closingbal":"1064.00","customer_id":"33","monthlycashInfow":3030,"monthlycashOutfow":4113,"monthyear":"2016-11","netcashflow":-1083,"openingbal":"0.00","ratioinfoutflow":0.24,"ratioinfoutflowamount":0.7367,"transnoInflow":6,"transnoOutflow":25}]; 
 

 
var sourceData = data.map(function(o, i) { 
 
    return [i, o.netcashflow]; 
 
}); 
 

 
console.log(sourceData);

+0

あなたの答えはありがとう、マッピングは大丈夫ですが、配列を生成しません。私はこれを得ている:0、-16,1,21,2、-1083,3,1000,4、-206,5、-1305,6,2415,7,132,8,351,9,454,10、-203,11,206 、12、-933 – Mathenge

+0

@Mathenge - スニペットを実行し、ブラウザのコンソールを見てください。配列を生成します。あなたのコードには別の問題があります。 –

+0

私はそれを探しています、もう1つ質問してください、 "var data"は配列ですか? @Ori Drori – Mathenge

0

おかげで、私はこのようにそれを達成することができました:

var data; 
      var objectStringArray; 
      $.each(json, function (key, value) { 
       if (key == 'cashflows') { 
        data = JSON.stringify(json.cashflows.cashflow); 
        objectStringArray = (new Function("return " + data+ ";")()); 
       } 
      }); 
      var sourceData = objectStringArray.map(function(o, i) { 
       return [i, o.netcashflow]; 
      }); 
関連する問題