【前端每日一题】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);
相关推荐
白嫖叫上我1 天前
Vue3+iconfont图标选择器封装
前端·vue
ID_180079054731 天前
淘宝店铺所有商品 API 接口:核心能力与数据返回参考
java·服务器·前端
Hello--_--World1 天前
vite:什么是热更新?vite 和 webpack 有什么区别?vite常见配置和优化手段?
前端·webpack·node.js
渡我白衣1 天前
定时器与时间轮思想
linux·开发语言·前端·c++·人工智能·深度学习·神经网络
鹏程十八少1 天前
13. Android 面了50位Kotlin候选人,这36个语法坑90%的人答不全
前端·后端·面试
Hello--_--World1 天前
Vite:什么是bundleless?哪些要打包,哪些不要打包?依赖预构建是什么?依赖预构建如何减少网络请求的?esbuild 又是什么?
前端·javascript·webpack·vite
Rooting++1 天前
vue2+webpack打包优化的相关问题
前端·webpack·node.js
alxraves1 天前
超声图像前端信号处理的关键技术
前端·fpga开发·信号处理
问心无愧05131 天前
ctf show web入门47
前端·笔记
web守墓人1 天前
【神经网络】js版本的Pytorch,estorch重磅发布
前端·javascript·人工智能·pytorch·深度学习·神经网络