常用场景(持续更新ing)
2022-11-07 本文已影响0人
怎么昵称
扁平化数组
let arr = [1,2,3,[1,2,3,4, [2,3,4]]];
// 扁平化数组
// 遍历数组中的值 当不是一个数组 将值push 到新数组中
// 如果当前值是数组 重新解析当前的数组
let newArr = []
let count = 0
function flat (arr){
if(arr.length !== 0){
arr.map(item=> {
if(typeof item == ('number' || 'string')){
newArr.push(item)
// console.log('ne',newArr)
}else {
flat(item)
count++
console.log(count);
}
})
}
return newArr
}
flat(arr)
方法2: 作为栈处理
// 按顺序出栈
// 栈不为空时循环执行处理
// 出栈的时数组时,就将元素解构后每个元素进行入栈操作
// 出栈元素不适数组的直接push到res
// 反转恢复原数组顺序
var arr = [1,2,3,[1,2,3,4, [2,3,4]]];
function flatten(arr){
const stack = [...arr]
const res = []
while(stack.length ){
// 使用pop 去除数组值
const next = stack.pop()
if(Array.isArray(next)){
// 使用push送回内层数组中的元素 不会改动原始输入
stack.push(...next)
}else {
res.push(next)
}
}
// 反转恢复原数组的顺序
return res.reverse()
}
flatten(arr1)