多维数组(降维)

文章介绍了多种将二维数组转换为一维数组的方法,包括使用reduce、concat、apply、flat以及递归。特别是flat方法在ES6中引入,能方便地处理嵌套数组。对于多层嵌套的情况,可以通过指定flat的深度参数来实现转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维数组转一维数组

reduce

var arrs = [1, 2, 3, [4, 5], ['s', 'e', 's']]
var flatArr = arrs.reduce((acc, item) => (acc.concat(item)), [])

concat

var newArr = [].concat(...arrs)
var newArr1 = Array.prototype.concat.apply([], arrs)

flat(ES6)

var flatArr1 = arrs.flat();

递归降维(多维)

forEach

Array.isArray() 用于确定传递的值是否是一个 Array,返回 true 或者 false。

在这个递归方法中,我们判断每一项是不是数组。

如果是,则进一步递归,直到其不是为止。

如果不是,则用新数组接收它。

var arr = [1, 2, ['t', 'h'], 3, [4, 5, [6, 7, 8, [10, 11]]], ['s', 'e', 's', ['d', 'f', 'b']]]
const flatArr = [];
function getFlatArr(arr) {
  arr.forEach((item) => {
    if (Array.isArray(item)) {
      getFlatArr(item)
    } else {
      flatArr.push(item)
    }
  })
}
getFlatArr(arr, flatArr)

reduce

const getFlatArr = (arr) => arr.reduce((acc, item) => {
    if (Array.isArray(item)) {
        return acc.concat(...getFlatArr(item))
    }
    return acc.concat(item)
}, [])

const flatArr = getFlatArr(arr)

flat

flat() 是 ES6 提供的一个将嵌套的数组 “拉平” 的方法。如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

const flatArr = arr.flat(Infinity);
const flatArr = arr.flat(2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值