平时会看到一些,或者其他分享的有趣的面试题。
特在此处整理。你问我为什么?
问题描述
写一个函数 xxx(n,m) 实现将1~n平均的分为m组,
如输入 xxx(5,2)
输出 [[1,2,3],[4,5]]
输入 xxx(10,6)
输出 [[1,2],[3,4],[5,6],[7,8],[9],[10]]
const chunk = (arr, size) =>
Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size));
const chunk = (m,n)=>{
const arr = Array(m).fill(0).map((v,i)=>i);
const size = m-n;
return Array.from({length:n},(v,i)=>arr.slice(size*i,size*i+size));
}
思路
1. 填充数组arr
2. 根据要分割比例,计算每一份的大小,分割arr。
题目描述
如下代码将会输出什么结果
var a = 5;
function b(){
if(!a){
var a = 10;
}
console.log(a);
}
b();
本题考查函数作用域和变量提升。
分析
由此可得: 在函数体b
开始执行时,由于变量提升。 存在局部变量a
初始值undefinded
;所以最终答案是10
题目描述
[1,7,11].map(parseInt) 输出结果为什么
要想弄清结果如何,必须先弄清这两个API的运作机制。
callback(item,key,array,context)
回调函数。我们带入循环。
输入 ‘1, 2, 3, 5, 7, 8, 10’ 输出 ‘1~3, 5, 7~8, 10’
function transArr(str) {
return str.split(",").map((item, key, arr) => (arr[key + 1] != +item + 1 || key === 0 || arr[key - 1] != item - 1) ? item == +arr[key - 1] + 1 ? `,${item}` : item : ",").toString().replace(/(,)\1+/g, '~')
}
undefinded
1,3,8,10,,
为~
完成。