是的,可以将while循环写在函数里面。可以将while循环的条件作为函数的参数,然后在函数内部进行循环判断。例如:

function bfs(node, condition){
  let result = [];
  let queue = [node];
  while(condition(queue)){
    let curlevel = queue;
    queue = [];
    Array.from(curlevel).forEach(item => {
      result.push(item);
      Array.from(item.children).forEach(el => {
        queue.push(el);
      })
    })
  }
  return result;
}

function condition(queue){
  return queue.length > 0;
}

let rootNode = document.getElementById('app');
let nodes = bfs(rootNode, condition);
console.log(nodes);

这样就将while循环的逻辑封装在了函数内部,可以灵活地修改循环的条件

let result = queue = curlevel = ; queuepushdocumentgetElementByIdapp; function bfsnode curlevel = queue; queue = ; ArrayfromcurlevelforEachitem = resultpushitem;

原文地址: https://www.cveoy.top/t/topic/iIMX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录