一、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,就会返回当前项,重新组成一个新的数组,不会修改原数组