ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多种方式实现数组的扁平化处理

2019-04-20 21:54:31  阅读:229  来源: 互联网

标签:多种 arr return 扁平化 newArr item flattening 数组 arr1


//task 1 split方法处理
1 function flattening(arr) {
2     let arr1 = (arr + "").split(",");
3     //此时得到的每一项的字符数组
4     //接着转数字
5     let arr2 = arr1.map(item => {
6         return item * 1;
7     })
8     return arr2;
9 }
//task 2 递归
 1 function flattening(arr, newArr = []) {
 2     for (let i = 0; i < arr.length; i++) {
 3         if (Array.isArray(arr[i])) {
 4             flattening(arr[i], newArr)
 5         } else {
 6             newArr.push(arr[i])
 7         }
 8     }
 9     return newArr
10 }
//task 2.1 递归第二种写法
 1 function flattening(arr) {
 2     var res = [];
 3     arr.map(item => {
 4         if (Array.isArray(item)) {
 5             res = res.concat(flattening(item));
 6         } else {
 7             res.push(item);
 8         }
 9     });
10     return res;
11 }
//task 3 扩展运算符
1 function flattening(arr) {
2     while (arr.some(item => Array.isArray(item))) {
3         arr = [].concat(...arr)
4     }
5     return arr;
6 }
//task 4 reduce+递归实现
 1 function flattening(arr) {
 2       let newArr=arr.reduce((prev,cur)=>{
 3         return [].concat(prev,cur)
 4     })
 5     
 6     let flag=newArr.some(item=>Array.isArray(item))
 7     if(flag){
 8         return flattening(newArr);
 9     }else{
10         return newArr
11     }
12 }

 

顺带提一句合并数组的几种方法

let arr1 = [1, 2]; let arr2 = [3, 4]; concat arr1 = arr1.concat(arr2); 扩展运算符 arr1 = [...arr1, ...arr2]; 或者 arr1.push(...arr2); 当数据小的时候三者没有区别 但是数据特别大的时候 concat性能远远高于其他两个

标签:多种,arr,return,扁平化,newArr,item,flattening,数组,arr1
来源: https://www.cnblogs.com/cq1715584439/p/10742854.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有