这是我一道很早接触的题目,整理过几次都觉得不够好。原出题人主要靠对es6语法的掌握,结果知乎大神们五花八门的答案真的刷新我对JavaScript的认识。
这里,先记录长度较短的答案,以后再解释难度较大的答案。
// 先创建一个长为100的稀疏数组
let temp = Object.keys(Array.apply(null, {length:100}))
let arr = temp.map(item => {
// 转为数字类型
return +temp;
})
// Array.keys拿到迭代器
let arr = Array.from(Array(100).keys())
// 方法与第一种类似 同样为字符数组 需要转化
let temp = Object.keys(Array.from({length:100}))
// es6扩展运算符
let arr = [...Array(100).keys()]
再来一个参考知乎答案,自己的迭代写法
注意,将res也放进去迭代
function replay(first=0, end=100, res=[]) {
if (first > end) {
return res
} else {
res.push(first)
return replay(first +1, end, res)
}
}
tips:
// all不是一个数组,是一个类数组对象
let all = document.querySelectorAll('.a')
// 转为数组
let arr = Array.from(all)