javascript 数组扁平化

发布时间:2022-03-18浏览次数:0

支持注册ChatGPT Plus的OneKey虚拟卡
绑定Apple Pay、Google Pay、支付宝和微信支付进行日常消费

注册和了解更多 ->

silver

数组的原生方法

arr.flat(Inifity); // Inifity 可以扁平化任意嵌套层数的数组

递归

function flat(arr) {
  let flattenArr = [];
  arr.forEach(item => {
    if (Array.isArray(item)) {
      flattenArr = flattenArr.concat(flat(item))
    } else {
      flattenArr.push(item);
    }
  })
  return flattenArr;
}

非递归

function flat(arr) {
	const flattenArr = [];
	for(let i = 0;i<arr.length;i++) {
  	const stack = [];
		if (Array.isArray(arr[i])) {
			stack.push(arr[i]);
		} else {
    	flattenArr.push(arr[i]);
		}
    while(stack.length) {
			const newArr = stack.pop();
      for(let i = 0;i<newArr.length;i++) {
        if (Array.isArray(newArr[i])) {
          stack.push(newArr[i]);
        } else {
          flattenArr.push(newArr[i]);
        }
      }
		}
	}
  return flattenArr;
}
字节笔记本扫描二维码查看更多内容