运用js实现数组的扁平化

我不是女神ヾ 2021-12-17 02:45 391阅读 0赞

一、数组的扁平化

  1. 数组的扁平化是将一个多维数组变为一个一维数组
  2. 核心思想:遍历数组arr,若arr[i] 为数组则递归遍历,直到arr[i]不为数组的时候,再与之前的结果concat连接起来

二、数组的扁平化实现

  1. ES6的扩展运算符 (…)

1)思路说明:在函数flatten(),通过arr.some()的方法用来检测数组中的元素是否满足指定的条件,通过遍历数组的元素,Array.isArray() 检测arr中是否含有数组,如果有数组满足条件那么就通过使用ES6的扩展运算符…,将一个数组转换为用逗号隔开的参数序列,连接并赋值给传入的形参数组arr,直到没有,最后返回,实现数组的扁平化,将多维变为一维数组

2)实现代码

  1. var arr1 = [1,[2,[3,4]]];
  2. function flatten1(arr) {
  3. while(arr.some ( item => Array.isArray(item))){
  4. arr = [].concat(...arr);
  5. }
  6. return arr;
  7. }
  8. console.log(flatten1(arr1));
  1. reduce 的方法

1)思路说明:通过arr.reduce() 方法,为数组中的每一个元素依次执行回调函数,遍历数组的每一项,如果值为数组,那么就递归遍历,否则concat 连接数组

2)实现代码

  1. var arr2 = [1,[2,[3,4]]];
  2. function flatten2 (arr) {
  3. return arr.reduce((result, item) => {
  4. return result.concat(Array.isArray(item) ? flatten2(item) : item);
  5. }, []);
  6. }
  7. console.log(flatten2(arr2));
  1. toString 和 split 的方法

1)思路说明:通过arr.toString() 的方法将数组变为字符串,然后通过split() 的方法分割字符串,
通过map() 的方法遍历每一项转换为数组型

2)实现代码

  1. var arr3 = [1,[2,[3,4]]];
  2. function flatten3 (arr) {
  3. return arr.toString().split(',').map(function(item) {
  4. return Number(item);
  5. })
  6. }
  7. console.log(flatten3(arr3));
  1. join 和 split 的方法

1)思路说明:通过arr.join() 的方法将数组的所有元素放入一个字符串中,元素通过指定的分隔符进行分割,然后通过split() 的方法分割字符串,通过map() 的方法遍历每一项转为数值型

2)实现代码

  1. var arr4 = [1,[2,[3,4]]];
  2. function flatten4 (arr) {
  3. return arr.join(',').split(',').map( function(item) {
  4. return Number(item);
  5. })
  6. }
  7. console.log(flatten4(arr4));
  1. map的遍历

1)思路说明:创建一个空数组,通过arr.map() 的方法递归遍历传入数组的每一项,若为数组那么就继续遍历,否则concat

2)实现代码

  1. var arr5 = [1,[2,[3,4]]];
  2. function flatten5 (arr) {
  3. var res = [];
  4. arr.map( item => {
  5. if(Array.isArray(item)) {
  6. res = res.concat( flatten5(item));
  7. }else {
  8. res.push(item);
  9. }
  10. });
  11. return res;
  12. }
  13. console.log(flatten5(arr5));

发表评论

表情:
评论列表 (有 0 条评论,391人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JS数组扁平

    一道笔试题,将一个嵌套数组扁平化处理。   ▍题目 > 将\[1,2,\[3,\[4,5\]\]\]转化成\[1,2,3,4,5\]。   ▍方法一:递归

    相关 扁平处理

    数组扁平化就是把二维三维。。。数组转化成一维普通数组。 官方提供的方法是flat flat函数默认参数是1,可以将二维数组转化成一维数组,以此类推参数是2可以将三维数组转化

    相关 js 数组扁平

    第一种 > 依次把每一项添加进新数组 > 如果为非数组,直接添加 > 如果为数组,则添加递归操作的结果 function flatten(ar