当前位置:首页 > JavaScript

js flat实现

2026-04-06 13:02:02JavaScript

flat 方法的基本概念

flat() 是 JavaScript 数组的一个方法,用于将嵌套数组“扁平化”,即将多维数组转换为一维数组。默认情况下,flat() 只会扁平化一层嵌套,但可以通过参数指定深度。

基本语法

arr.flat([depth])
  • depth(可选):指定要扁平化的嵌套层数,默认为 1。如果传入 Infinity,则会完全扁平化所有嵌套。

使用示例

默认扁平化一层

const arr1 = [1, 2, [3, 4]];
console.log(arr1.flat()); // 输出: [1, 2, 3, 4]

指定扁平化深度

const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat(2)); // 输出: [1, 2, 3, 4, 5, 6]

完全扁平化

const arr3 = [1, 2, [3, 4, [5, 6, [7, 8]]]];
console.log(arr3.flat(Infinity)); // 输出: [1, 2, 3, 4, 5, 6, 7, 8]

手动实现 flat 方法

如果不支持 flat() 方法(如旧版浏览器),可以手动实现类似功能:

js flat实现

递归实现

function flatten(arr, depth = 1) {
  if (depth === 0) return arr.slice();
  return arr.reduce((acc, val) => {
    return acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val);
  }, []);
}

const arr = [1, 2, [3, 4, [5, 6]]];
console.log(flatten(arr, 2)); // 输出: [1, 2, 3, 4, 5, 6]

迭代实现

function flatten(arr, depth = 1) {
  let result = arr.slice();
  while (depth-- > 0) {
    let flattened = false;
    const temp = [];
    for (const val of result) {
      if (Array.isArray(val)) {
        temp.push(...val);
        flattened = true;
      } else {
        temp.push(val);
      }
    }
    result = temp;
    if (!flattened) break;
  }
  return result;
}

const arr = [1, 2, [3, 4, [5, 6]]];
console.log(flatten(arr, 2)); // 输出: [1, 2, 3, 4, 5, 6]

注意事项

  • 如果数组中包含空位(如 [1, , 3]),flat() 方法会忽略这些空位。
  • 手动实现时需要注意性能问题,尤其是对于深度嵌套的大数组。

标签: jsflat
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…