关于ES6的flat(扁平化数组)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于ES6的flat(扁平化数组)相关的知识,希望对你有一定的参考价值。
参考技术A 一个部门JSON数据中,属性名是部门id,属性值是个部门成员id数组集合,现在要把有部门的成员id都提取到一个数组集合中。可以考虑使用Object.values和flat方法实现:
1、Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
2、其中使用Infinity作为flat的参数,使得无需知道被扁平化的数组的维度。
3、flat方法不支持IE浏览器。
数组扁平化的处理
第一种:使用 es6中的flat方法
const arr = [1,[2,[3,[4,5]]],6]
// 方法一:数组自带的扁平化方法,flat的参数代表的是需要展开几层,如果是Infinity的话,就是嵌套几层,全部都展开
console.log(arr.flat(Infinity))
第二种:使用正则表达式
const arr = [1,[2,[3,[4,5]]],6]
function flatten(arr)
// 使用正则表达式匹配字符,并替换
let arr1 = JSON.stringify(arr).replace( /\\[|\\]/g ,'')
return JSON.parse('['+arr1+ ']')
console.log(flatten(arr));
第三种:使用递归
const arr = [1,[2,[3,[4,5]]],6]
var array=[]
function flatten(arr)
// 判断是否是数组
for(let i=0 ;i<arr.length; i++)
if(Array.isArray(arr[i]))
flatten(arr[i])
else
array.push(arr[i])
return array
console.log(flatten(arr));
第四种:使用reduce
const arr = [1,[2,[3,[4,5]]],6]
var array=[]
function flatten(arr)
return arr.reduce((sum,value)=>
return sum.concat(Array.isArray(value) ? flatten(value) :value)
,[])
console.log(flatten(arr));
第五种:使用 …扩展运算符
const arr = [1,[2,[3,[4,5]]],6]
function flat(arr)
while (arr.some(item => Array.isArray(item)))
arr = [].concat(...arr);
return arr;
console.log(flat(arr));
以上是关于关于ES6的flat(扁平化数组)的主要内容,如果未能解决你的问题,请参考以下文章