数组扁平化
flat
array = array.flat(number|Infinity)
number代表的是扁平化的级数 Infinity无限 即所有数据扁平化
转换成字符串
toString()方法
arr = arr.toString().split(',').map(item => parseFloat(item))
JSON
arr = JSON.stringify(arr).replace(/([|])/g, '').split(',').map(item=>parseFloat(item))
循环验证是否是数组
while
while (arr.some(item => Array.isArray(item))) { // some只要有一个满足条件就返回true
arr = [].concat(...arr)
}
console.log(arr); // [8, 111, 1, 2, 3, 11, 22, 21, 22, 23, 4, 111, 222, 41, 42, 51, 52, 61, 62, 53, 43, 333, 5]
// concat会扁平化一级的
let a = [1,2,3,[4,5,6]]
a = [].concat(...a)
console.log(a); // [1, 2, 3, 4, 5, 6]
let b = [1,2,3,[4,5,6,[7,8,9]]]
b = [].concat(...b)
console.log(b); // [1, 2, 3, 4, 5, 6, [7,8,9]]
递归
function myFlat(arr){
let result = []
// 循环数组中的每一项,把不是数组的存储到新数组中
let fn = (arr) => {
for (let i = 0; i < arr.length; i++) {
if(Array.isArray(arr[i])){
fn(arr[i])
continue
} else {
result.push(arr[i])
}
}
}
fn(arr)
return result
}
斐波那契数列
// 获取斐波那契中的个数
function febonacci(num){
if(num-1 <= 1) return 1
let arr = [1,1]
//还需要创建多少位
let count = num -2
while (count > 0) {
let a1 = arr[arr.length - 1]
let a2 = arr[arr.length - 2]
arr.push(a1+a2)
count --
}
return arr
}