js数组扁平化

数组扁平化就是将多维的数组转换成一维数组,比如将 [[1,2,3,[4,5,6,[7,8]]],[9,10],[11,12,[13]],5] 扁平化后就是 [1,2,3,4,5,6,7,8,9,10,11,12,13,5]

代码实现:

function flattening(arr){
  //1、将数组转换成以逗号分割的字符串
  arr = arr.toString()
  // console.log(arr); //'1,2,3,4,5,6,7,8,9,10,11,12,13,5'
  //2、将字符串转换成数组
  arr = arr.split(',') 
  // console.log(arr); //['1',  '2',  '3',  '4', '5',  '6',  '7',  '8', '9',  '10', '11', '12', '13', '5']
  //3、将数组的每一项转换成数字类型
  arr = arr.map(function(item){
    return Number(item)
  })
  return arr
}
var arr = [[1,2,3,[4,5,6,[7,8]]],[9,10],[11,12,[13]],5]
console.log(flattening(arr)); //[1, 2, 3,  4,  5,  6, 7, 8, 9, 10, 11, 12, 13, 5]

优化上述代码:

function flattening(arr){
  return arr.toString().split(',').map(function(item){
    return Number(item)
  })
}
var arr = [[1,2,3,[4,5,6,[7,8]]],[9,10],[11,12,[13]],5]
console.log(flattening(arr)); //[1, 2, 3,  4,  5,  6, 7, 8, 9, 10, 11, 12, 13, 5]

我们还可以直接使用数组扁平化方法flat()
flat()方法可以传入参数 n 或者 Infinity:
n:扁平化 n 层
Infinity:扁平化到最深层次,就是直接把数组转成一维

var arr = [[1,2,3,[4,5,6,[7,8]]],[9,10],[11,12,[13]],5]
//扁平化一层
console.log(arr.flat(1)); //[ 1, 2, 3, [ 4, 5, 6, [ 7, 8 ] ], 9, 10, 11, 12, [ 13 ], 5 ]
//扁平化到最深层,即转成一维数组
console.log(arr.flat(Infinity)); //[1, 2, 3,  4,  5,  6, 7, 8, 9, 10, 11, 12, 13, 5]
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值