【问题标题】:JavaScript: Transforming a multi-dimensional array into a two dimensional arrayJavaScript:将多维数组转换为二维数组
【发布时间】:2012-04-12 12:50:58
【问题描述】:

我有一个 JS 数组,其中填充了如下数据:

var myarr = [[new Date("2011-12-01"), 389, 380.75, 382.54, 387.93],
[new Date("2011-11-30"), 382.28, 378.3, 381.29, 382.2]...]

有没有办法只选择整个日期列和每行的最后一个数字?我正在寻找类似这样的输出:

[[new Date("2011-12-01"), 387.93],[new Date("2011-11-30"), 382.2]...]

【问题讨论】:

    标签: javascript jquery multidimensional-array


    【解决方案1】:
    var myCollapsedArr = [[myarr[0][0], myarr[0][myarr[0].length-1]], [myarr[1][0], myarr[1][myarr[1].length-1]];
    

    或者在for循环中:

    var myCollapsedArr = [];
    
    for(var i = 0; i<myarr.length; i++) {
        myCollapsedArr.push([myarr[i], [myarr[i][myarr[i].length-1]]);
    }
    

    【讨论】:

    • 请注意,在循环设置中缓存数组的长度是一个好习惯,否则您每次都重新计算它。速度不是很大,但绝不是一个坏主意。 for (var i=0,len=myarr.length;i&lt;len;++i) …
    • 谢谢,艾略特。循环工作。虽然我在想可能有一些函数,比如 slice 可以在不使用循环的情况下完成它。干杯!
    【解决方案2】:

    选项 1 - 简单的 for 循环

    // Create array to hold new values
    var newArray = [];
    // Loop through existing array and pull out data
    for(var i = 0; i < myarr.length; i++) {
        newArray.push([myarr[i][0], myarr[i][myarr[i].length - 1]]);
    }
    

    这里是a working fiddle 来演示。

    选项 2 - ECMAScript 5 forEach()

    // Create array to hold new values
    var newArray = [];
    
    // Loop through existing array and pull out data
    myarr.forEach(function(obj) {
        newArray.push([obj[0], obj[obj.length - 1]]);
    });
    

    ​这里是a working fiddle 来演示。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2012-08-15
      • 2019-07-09
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2016-02-18
      • 2018-02-19
      相关资源
      最近更新 更多