无答案版本
data = [{name: "Joe", age: 12}, {name: "Irving", age: 42}, {name: "Olive", age: 31}]
主题目每个 2 分, 剩下的每个 1 分. 共 20 分
- 问题一: 找到叫 Joe 的人.
- 问题: 使用不同的方法(至少三种)找到所有叫 Joe 的人.
- 问题二: 找到最大的年龄. (普通取一个值)
- 问题: 使用不同的方法 找到最大的年龄. (至少一个额外方法)
- 问题三: 找到年龄平均数. (取一个值, 取巧方法)
- 问题: 使用不同的方法 找到年龄平均数. (至少一个额外方法)
- 问题四: 找到年龄中位数. (取一个值, 取巧方法)
- 问题五: 为每个人生成一个编号, 数据转为
{ name, age, number }. - 问题: 找到所有 Joe, 语意化最佳方法是什么.
- 问题: 找到最大的年龄, 语意化最佳方法是什么.
- 问题: 生成编号, 语意化最佳方法是什么.
- 问题六: for, for of 和 for in 区别.
- 问题七: 几个数组循环方法和 for 逻辑语句有什么不同, 应用场景. (工程问题, 至少包含
.find()和.some()的区别,.reduce(),.filter(),.map()等的区别)
最终答案会在浏览器控制台中验证, 全部答对为满分.
有三个分支:
- main
- fix
- next
操作流程复现如下:
- 将 fix 分支合并到 next 分支.
- next 分支合并到 main, 然后发现这个不该合并.
- 就在 main 上回滚 revert 了 next 分支.
- 继续在 next 分支上开发.
- 合并 next 分支到 main 分支.
- 发现之前 fix 的内容丢失.
可能是什么原因, 为什么会发生, 如何修复, 如何避免.
为第一题中的原始数据写类型. (3 分)
写一个正整数的类型判断函数. (2 分)
下面两小题, 每小题 5 分.
使用泛型的题目为, 为高阶函数写类型:
// 题目
function hofjs(fn) {
return (...rest) => {
const res = fn(...rest);
console.log(res);
return res;
}
}刚才不支持异步, 如果要支持异步该怎么办呢?
// 测试
const h1 = hof((v: string) => Promise.resolve(Number(v)))
const h2 = hof((v: string) => Number(v))
const h3 = hof(async (v: string) => Number(v))
h1('123');
h2('1234');
h3('12345');全部完成为满分.
每个 bug 2 分, 共 10 分.
type User = {name: string, age: number};
type FetchDataFromDB = () => Promise<User[]>;
// 假设其他人已经完成了 fetchDataFromDB, 并且引用, 总之 fetchDataFromDB 本身不算问题.
function getLast(): User {
const d = fetchDataFromDB();
return d[0];
}function getNum(v: unknown) {
if (Number(v) == NaN) {
throw 'wrong param';
}
return Number(v);
}