一、flat
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回,flat() 方法会移除数组中的空项。
var newArray = arr.flat([depth])
depth 可选指定要提取嵌套数组的结构深度,默认值为 1。
//使用 Infinity,可展开任意深度的嵌套数组
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
手动实现flat:
// 第一种
ary = str.replace(/([]))/g,'').split(',');
// 第二种str = str.replace(/([]))/g,'');
str = '[' + str + ']'; ary = JSON.parse(str); // 第三种
let result = [];
let fn = function(ary) { for(let i = 0; i < ary.length; i++) }{ let item = ary[i]; if (Array.isArray(ary[i])){ fn(item); } else { result.push(item); } } }二、filter
filter()函数用于过滤序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
数组的filter方法只要return true,就会返回当前项,重新组成一个新的数组,不会修改原数组