es6数组的flat()方法

Array.prototype.flat()

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

Array.prototype.flat() 用于将嵌套的数组“扁平化”,将二维数组变成一维数组。该方法返回一个新数组,对原数据没有影响。

语法

var newArray = arr.flat([depth])

参数:depth 可选,指定要提取嵌套数组的结构深度,默认值为 1。

返回值:一个包含数组与子数组中所有元素的新数组。

示例

var arr1 = [
    [0, 1],
    [2, 3],
    [4, 5]
]
var arr2 = arr1.flat()
console.log(arr2)   // [0, 1, 2, 3, 4, 5]

var arr = [1, 2, [3, 4, [5, 6]]];
console.log(arr.flat());   // [1, 2, 3, 4, [5, 6]]
console.log(arr.flat(2));  // [1, 2, 3, 4, 5, 6]

使用 Infinity,可展开任意深度的嵌套数组:

var arr3 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
console.log(arr3.flat(Infinity));  // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

flat() 方法会移除数组中的空项:

var arr4 = [1, 2, , 4, 5];
console.log(arr4.flat());   // [1, 2, 4, 5]

flat()方法的替代方案:使用reduce()和concat()

var arr1 = [
    [0, 1],
    [2, 3],
    [4, 5]
]
var arr2 = arr1.reduce((arr,item)=>arr.concat(item),[])
console.log(arr2)  // [0, 1, 2, 3, 4, 5]
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eS6(ES2015)引入了许多新的数组方法,以下是其中一些常见的方法: 1. `Array.from()`:将类数组对象或可迭代对象转换为真正的数组。 2. `Array.of()`:创建一个包含传入参数的新数组。 3. `Array.prototype.find()`:返回数组中满足条件的第一个元素。 4. `Array.prototype.findIndex()`:返回数组中满足条件的第一个元素的索引。 5. `Array.prototype.includes()`:判断数组是否包含指定的元素。 6. `Array.prototype.fill()`:用一个固定值填充整个数组或指定的部分。 7. `Array.prototype.keys()`:返回一个包含数组索引的新迭代器对象。 8. `Array.prototype.values()`:返回一个包含数组值的新迭代器对象。 9. `Array.prototype.entries()`:返回一个包含数组索引和值的新迭代器对象。 10. `Array.prototype.flat()`:将多维数组扁平化为一维数组。 11. `Array.prototype.flatMap()`:首先使用映射函数映射每个元素,然后将结果扁平化为一维数组。 12. `Array.prototype.forEach()`:对数组中的每个元素执行提供的函数。 13. `Array.prototype.map()`:创建一个新数组,其中每个元素为原始数组元素调用提供的函数的结果。 14. `Array.prototype.filter()`:创建一个新数组,其中仅包含满足条件的原始数组元素。 15. `Array.prototype.reduce()`:将数组元素通过提供的函数累积为单个值。 16. `Array.prototype.reduceRight()`:与`reduce()`相同,但从右向左处理数组元素。 17. `Array.prototype.some()`:检查数组中是否至少有一个元素满足条件。 18. `Array.prototype.every()`:检查数组中的所有元素是否都满足条件。 19. `Array.prototype.sort()`:原地对数组进行排序。 20. `Array.prototype.reverse()`:原地反转数组元素的顺序。 这些是ES6中常见的数组方法,它们提供了更便捷和灵活的方式来操作和处理数组

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值