【问题标题】:Push elements dynamically to a multidimensional array in javascript将元素动态推送到javascript中的多维数组
【发布时间】:2017-11-12 15:43:42
【问题描述】:

如何创建元素并将其推送到多维数组? 我想实现这样的数组:

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]
            ];

现在,我希望每个子数组中的第一个值像上面那样递增,例如 0、1、2 等。子数组右侧的值应该从 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();
                        }
                    }
                }
            });

【问题讨论】:

  • @whodini9 让我用我尝试过的方法更新问题。

标签: javascript arrays json multidimensional-array


【解决方案1】:

使用Array#map 以请求格式创建一个新数组。传递给 Array#map 的第二个参数是当前索引,可以作为增量值使用:

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,-16,1,21,2,-1083,3,1000,4,-206,5,-1305,6,2415,7,132,8,351,9,454,10,-2​​03,11,206 ,12,-933
  • @Mathenge - 运行 sn-p,然后查看浏览器的控制台。它生成一个数组。您的代码中还有另一个问题。
  • 我正在研究它,请再问一个问题,“var data”应该是一个数组吗? @Ori Drori
  • @Mathenge:您可能正在使用alert() 查看结果。使用适当的日志记录和调试工具。
  • @Mathenge - 根据数据的格式,它看起来像一个数组,但您必须查看原始数据。
【解决方案2】:

感谢@Ori Dori 的方法,我能够这样实现:

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];
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2011-12-14
    • 2021-12-10
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多