负深度以下示例演示了指定负深度参数值的情况:
var array1 = [1, 2, [3, 4], [[5, 6]], [[[7, 8]]], [[[[9, 10]]]]];var array2 = array1.flat(-Infinity);// array2: [1, 2, [3, 4], [[5, 6]], [[[7, 8]]], [[[[9, 10]]]]]
使用 depth 参数值 -Infinity 调用 flat() 函数 。由于负深度值对于扁平嵌套数组没有意义 , 所以在指定负深度参数值的情况下 , 将使用 0 作为替代 。正如前面的示例所演示的那样 , 当指定深度参数值为 0 时 , 原始数组中没有数组是扁平的 , 而新数组中各个数组项和嵌套数组的组成与原始数组完全相同 。
经验教训关于 flat() 函数 , 可以从本文中学到一些经验教训 。首先要记住的是 , flat() 函数不会以任何方式改变原始数组中的任何普通或嵌套数组 , 因此在使用该函数之前无需维护这些数组的状态 。flat() 函数唯一会改变的数组是函数完成后返回的全新数组 , 它只是使用原始数组的所有内容构建的 。
要记住的第二件事是 , flat() 函数将删除原始数组中存在的所有空值 。下面的示例演示了该功能的实际作用:
var array1 = [1, , 3, , 5];var array2 = array1.flat();// array2: [1, 3, 5]
尽管原始数组占用了五个位置 , 而第二个和第四个位置的值未定义 , 但是 flat() 函数从函数完成后返回的新数组中删除了这两个数组项 。结果 , 新数组只包含三个数组项 , 它们的值不为 undefined 。
关于 flat() 函数要记住的第三件事 , 也是最后一件事 , 是它的一般用途 , 以及它如何有助于简化逻辑 , 如果没有一个可用的 flat()函数 , 要合并任何数组中包含的所有项目 , 通常的方法是编写自定义的逻辑来迭代所有的数组 , 从一个数组中单独拉出项目 , 然后把它们放到另一个数组中 , 可能会考虑到其中的嵌套数组 。这样的逻辑往往比较混乱 , 而且容易出错 , 因此 , 通过使用抽象的内置函数(如 flat() 函数)来避免它的出现 , 是一个很好的选择 。
推荐阅读
- 茶香面包的做法,红茶面包棒的做法
- 买电脑、DIY电脑,你必须了解的避坑技能
- 终于有人把最适合学习算法的书单找出来了,面试必备
- 一种通用的数据仓库分层方法
- 最认主人的狗排名是怎样的?
- DNS改为114.114.114.114真的能提高网速吗?该如何提高网速
- ping命令的七种用法,看完瞬间成大神
- 捕斑鸠鸟最好的方法是什么?
- 吉祥生肖指哪个生肖?
- vps服务器远程桌面卡顿的原因及解决方案 新手速看