前端面试小伙伴投来的求救?
- 请写出该代码块执行顺序
async function async1 () { console.log(‘async1 start’) await async2(); console.log(‘async1 end’)}async function async2 () { console.log(‘async2’)}console.log(‘script start’)setTimeout(function () { console.log(‘setTimeout’)}, 0)async1()new Promise(function (resolve) { console.log(‘promise1’) resolve()}).then(function () { console.log(‘promise2’)})console.log(‘script end’) script startasync1 startasync2promise1script endasync1 endpromise2setTimeout
2.请将该data数组铺平
const data = [ { id: 1, title: “课程1”, children: [ { id: 4, title: “课程1-1” }, { id: 5, title: “课程1-2”, children: [ { id: 6, title: “课程1-2-1” }, { id: 7, title: “课程1-2-2” }, ], }, ], }, { id: 2, title: “课程2” }, { id: 3, title: “课程3” },]; 输出结果:const formatData = [ { id: 1, title: “课程1” }, { id: 4, title: “课程1-1” }, { id: 5, title: “课程1-2” }, { id: 6, title: “课程1-2-1” }, { id: 7, title: “课程1-2-2” }, { id: 1, title: “课程2” }, { id: 1, title: “课程3” },];
function treetoArray(data) { let temp = []; Array.from(data).forEach((record) => { temp.push(record); if (record.children && record.children.length > 0) { const children = treetoArray(record.children); temp = temp.concat(children); delete record.children; } }); return temp;} console.log(treetoArray(data)); let temp = []; function treetoArray(data) { for (var i = 0; i < data.length; i++) { temp.push(data[i]); if (data[i].children) { treetoArray(data[i].children); delete data[i].children; } } } treetoArray(data); console.log(temp);
1. 请实现函数防抖
function debounce(func, wait, immediate) {
let timer;
return function() {
let context = this,
args = arguments;
if (timer) clearTimeout(timer);
if (immediate) {
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) func.apply(context, args);
} else {
timer = setTimeout(() => {
func.apply
}, wait)
}
}
}