多维数组变成一维数组

1:es6新增的flat

1:html部分

{{ demo1 }}
    <br>
    <br>
{{ demo2 }}

2:js部分

flat方法默认没有参数,这时只会降维降一层。可以传数字类型的参数指定降维次数。

如果想将任意维度的数组变成一位数组,可以传入Infinity。

flat方法不改变原数组。

  data() {
    return {
      moreArr1:[
        [12,21,22,],
        1,2,
        [
          [122,231],
          20,19
        ]
      ],
      moreArr2:[
        {
          '前排':'吃瓜群众'
        },
        [
          {'第二层1':'val1'},
          {'第二层2':'val2'},
          {'第二层3':'val3'},
        ],
        {'第一层1':'val1'},
        {'第一层2':'val2'},
        [
          [
          {'第三层1':'val1'},
          {'第三层2':'val2'},
          ],
          {'第二层4pp':'val4'},
          {'第二层5pp':'val5'},
        ]
      ]
    };
  },


computed: {
    demo1(){
      return this.moreArr1.flat(Infinity)
    },
    demo2(){
      return this.moreArr2.flat(Infinity)
    },
  },

2:es6新增的flatMap方法

flatMap()方法,参数是一个回调函数,类似map方法的使用,数组的每个元素执行一次回调函数,然后对返回的数组执行flat()方法,只降一次维,

 

3:递归调用

let data=[
  [12,21],
  1,2,3,
  [
    [111,222,333,[4444,5555,2222]],
    33,44,
  ]
];
let res=[];
//如果元素不是数组,将会报错。下面是改良版:
function changeArr(arr){
  arr.forEach
  ?(arr.forEach(item=>{
    item.forEach
    ?changeArr(item)
    :res.push(item)
  }))
  :res.push(arr)
}

console.log(changeArr(data)) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值