数组遍历与递归思想

本文介绍了一种使用JavaScript实现的通用方法,该方法能够将任意深度的嵌套数组中的所有元素提取出来,并放入一个新的扁平化数组中。通过递归思想,文章详细解释了这一过程的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈到数组操作方法和递归思想,突然想起几年前一位来自百度的工程师出的面试题,感觉挺符合今天的主题,现与各位分享。

面试题是这样的,将任意嵌套数组拆分成一个包含数组里元素的数组,最终得到的数组不能包含数组元素。说起来,有点绕哈,现用JavaScript语言来举例说明。

比如定义var s = [2,["cc"],[2,"a",[1,"c",[2,"a",[1,"c"]]]],[1,"aa","bb"],[23, 65, 98, 5]];如何数组中的嵌套数组中的元素全部取出,并放入一个新数组var new_s = [];并保证new_s中不再存在一个数组元素呢?

现在让我们来定义一个通用方法

function expandArray(arr) { arr.forEach(function(item,i,list){

        if (Array.isArray(item)) {
        expandArray(item);
        }else {
        new_s.push(item);
        }
});

}

expandArray(s);
console.log(s);

console.log(new_s);

通用方法expandArray在遍历待处理数组时,逻辑判断里采用了递归调用的思想,精炼地阐述了数组遍历与递归思想的妙用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值