常用场景(持续更新ing)

扁平化数组

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)

你可能感兴趣的:(常用场景(持续更新ing))