【前端每日一题】day4——数组扁平化的实现

数组扁平化的实现

数组扁平化(flatten)是将一个多维数组转换为一个一维数组的过程。在 JavaScript 中,可以使用递归或者数组的一些内置方法来实现数组扁平化。

递归实现:

javascript 复制代码
function flattenArray(arr) {
    var result = [];
    arr.forEach(function(item) {
        if (Array.isArray(item)) {
            result = result.concat(flattenArray(item));
        } else {
            result.push(item);
        }
    });
    return result;
}

使用 reduce() 方法实现:

javascript 复制代码
function flattenArray(arr) {
    return arr.reduce(function(prev, curr) {
        return prev.concat(Array.isArray(curr) ? flattenArray(curr) : curr);
    }, []);
}

使用 flat() 方法(ES6+):

javascript 复制代码
// 指定深度
array.flat(depth);
javascript 复制代码
// 无限深度
array.flat(Infinity);

使用扩展运算符(ES6+):

javascript 复制代码
var arr = [1, [2, [3, 4]]];
var flattenedArray = [].concat(...arr);
相关推荐
CarIise7 分钟前
下拉菜单HTML/CSS/JS实现
前端·css
2601_9620715716 分钟前
Java进阶(vue基础)
前端·javascript·vue.js
研☆香16 分钟前
数组方法 splice讲解 拓展
开发语言·前端·javascript
码视野18 分钟前
基于 Spring Boot + Vue3 的【城市地下燃气管网微泄漏感知与相邻地下空间燃爆预警中台】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端
淡海水20 分钟前
05-03-栈队列-PriorityQueue-TElement-TPriority-NET6优先队列语义与四叉堆实现
服务器·前端·c#·priorityqueue·clr·telement
ITresearchGuest1 小时前
LangChain JS 入门:快速搭建前端 AI 开发环境
前端·javascript·langchain
YHHLAI1 小时前
React + TypeScript 实战:从零构建颜色选择器应用
前端·react.js·typescript
Profile排查笔记1 小时前
指纹浏览器手机版怎么选?从本地 App 到云端 Android 的实现方式解析
前端·人工智能·后端·自动化
浪兎兎2 小时前
Vue CLI笔记
前端·vue.js·笔记
Csvn2 小时前
Proxy / Reflect 与响应式原理:完整手写一个 mini Vue3 响应式系统
前端