返回
手撕js手写题,从入门到进阶!掌握前端开发必备技能!
前端
2023-10-20 13:11:46
在前端开发领域,JavaScript(JS)作为一门重要的编程语言,深受广大开发者的喜爱。想要成为一名合格的前端工程师,扎实的JS功底是必不可少的。为了帮助您提升JS编程能力,本文精选了3道经典JS手写题,从入门到进阶,一步步带领您掌握JS编程的精髓。
手撕3道JS手写题,从入门到进阶!
1. 字符串反转
给定一个字符串,请编写代码将其反转。
function reverseString(str) {
// 检查输入是否有效
if (typeof str !== "string") {
throw new Error("Input must be a string.");
}
// 创建一个空字符串来存储反转后的字符串
let reversedStr = "";
// 从字符串末尾开始,依次将每个字符添加到反转后的字符串中
for (let i = str.length - 1; i >= 0; i--) {
reversedStr += str[i];
}
// 返回反转后的字符串
return reversedStr;
}
// 测试代码
console.log(reverseString("Hello World!")); // 输出:"!dlroW olleH"
2. 斐波那契数列生成器
编写一个函数,生成斐波那契数列的前n项。
function fibonacciGenerator(n) {
// 检查输入是否有效
if (typeof n !== "number" || n < 1) {
throw new Error("Input must be a positive integer.");
}
// 创建一个数组来存储斐波那契数列
const fibonacciSequence = [0, 1];
// 从第三项开始,计算并添加到数组中
for (let i = 2; i < n; i++) {
fibonacciSequence[i] = fibonacciSequence[i - 1] + fibonacciSequence[i - 2];
}
// 返回斐波那契数列
return fibonacciSequence;
}
// 测试代码
console.log(fibonacciGenerator(10)); // 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
3. 二分查找算法
给定一个有序数组和一个目标值,请编写代码使用二分查找算法查找目标值在数组中的位置。
function binarySearch(arr, target) {
// 检查输入是否有效
if (!Array.isArray(arr) || arr.length === 0 || typeof target !== "number") {
throw new Error("Invalid input.");
}
// 确定数组的左右边界
let left = 0;
let right = arr.length - 1;
// 在数组中查找目标值
while (left <= right) {
// 计算中间索引
const mid = Math.floor((left + right) / 2);
// 检查中间元素是否等于目标值
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
// 目标值大于中间元素,将左边界移动到中间元素的右侧
left = mid + 1;
} else {
// 目标值小于中间元素,将右边界移动到中间元素的左侧
right = mid - 1;
}
}
// 未找到目标值,返回-1
return -1;
}
// 测试代码
const arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
const target = 11;
console.log(binarySearch(arr, target)); // 输出:5
结语
以上3道JS手写题涵盖了基础知识和进阶技巧,能够帮助您全面提升JS编程水平。通过反复练习这些题,您将掌握JS编程的精髓,为成为一名优秀的前端工程师打下坚实的基础。