算法 二维数组行列转换,将不同行同列的放在一个数组

主要思路,将原二维数组映射为新的键值对数组(键为下标,值为数据),并拆分为一维数组。

再讲一维数组根据相同的key组合为不同的一维数组,再将其整合为二维数组。

下面代码可复制直接尝试

 var arr1 = [[1,2,3],[4,5,6],[7,8]];
        arr1.map(function (item, index) {
            item.map(function (childItem, childItemIndex) {
                item[childItemIndex]  =  {"key": childItemIndex, "value": childItem}
            })
            return item
        })
        var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} );
        var arr3 = groupBy(arr2, "key")
 /*
    * 按照某个key,将以为数组分组为二维数组
    */
    function groupBy( array , id ) {
        let groups = {};
        array.forEach( function( o ) {
            let group = JSON.stringify( o[id] );
            groups[group] = groups[group] || [];
            groups[group].push( o["value"]);
        });
        return Object.values(groups);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值