数组扁平化
将一个多维数组变为一个一维数组
let arr = [1, [2, [3, [4, 5]]], 6];
使用flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
//Infinity无穷
console.log(arr);
let res1 = arr.flat(Infinity)
console.log(res1);
利用正则 但数据类型都会变为字符串
//JSON.stringify() 把 JavaScript 对象转换为字符串。
// replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
// split() 方法用于把一个字符串分割成字符串数组
// 最前面的“/”与最后面的“/”是分隔符,表示正则表达式的开始与结束 “\”来表示是要找字符的花括号
let res2 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',');
console.log(arr);
console.log(res2);
// 正则改良版本
//JSON.parse() //方法用于将一个 JSON 字符串转换为对象。
let res3 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']');
console.log(res3);
递归函数
// 是指函数直接或间接调用函数本身,则称该函数为递归函数。 *必须有一个终止处理或计算的出口。
function fun(n) {
if (n == 1 || n == 0) {
return 1
}
return n * fun(n - 1)
}
console.log(fun(8));
递归函数扁平化
let res5 = [];
let fn = arr => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) { //Array.isArray() 用于确定传递的值是否是一个 Array。
fn(arr[i]);
} else {
res5.push(arr[i]);
}}}
fn(arr);
console.log(res5);