当前位置:首页 > JavaScript

js实现flat

2026-03-15 08:06:24JavaScript

实现数组扁平化的方法

使用递归方法实现数组扁平化。递归遍历数组中的每个元素,如果元素是数组则继续递归,否则将元素添加到结果数组中。

function flat(arr, depth = 1) {
  let result = [];
  arr.forEach(item => {
    if (Array.isArray(item) && depth > 0) {
      result.push(...flat(item, depth - 1));
    } else {
      result.push(item);
    }
  });
  return result;
}

使用reduce实现扁平化

通过reduce方法遍历数组,将非数组元素直接添加到结果中,数组元素则递归处理。

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

使用堆栈实现非递归扁平化

通过堆栈结构实现非递归的扁平化处理,适合处理深度较大的数组。

function flat(arr, depth = 1) {
  const stack = arr.map(item => ({ item, depth }));
  const result = [];
  while (stack.length) {
    const { item, depth } = stack.pop();
    if (Array.isArray(item) && depth > 0) {
      stack.push(...item.map(subItem => ({ item: subItem, depth: depth - 1 })));
    } else {
      result.push(item);
    }
  }
  return result.reverse();
}

使用Generator实现惰性扁平化

通过Generator函数实现按需扁平化,适合处理大规模数据。

js实现flat

function* flatGenerator(arr, depth = 1) {
  for (const item of arr) {
    if (Array.isArray(item) && depth > 0) {
      yield* flatGenerator(item, depth - 1);
    } else {
      yield item;
    }
  }
}

function flat(arr, depth = 1) {
  return [...flatGenerator(arr, depth)];
}

注意事项

每种实现方式都有其适用场景。递归方法简洁但可能有调用栈限制,reduce方法函数式风格明显,堆栈方法适合深度大的结构,Generator方法适合流式处理。根据实际需求选择合适的方法。

标签: jsflat
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…