返回
精进JS基础,助力面试高频题攻克:32个手写JS难题剖析
前端
2023-11-17 06:37:58
32个手写JS难题剖析
作为前端开发,JS无疑是重中之重。要想在面试中脱颖而出,扎实掌握JS基础知识和解决算法问题的能力必不可少。本文精选了32个手写JS面试高频题,涵盖了JS基础知识、算法实现、数据结构应用等方面。通过对这些题目的剖析,帮助你巩固JS基础,提升面试表现。文中提供了详细的解答和代码示例,助你轻松掌握这些编程难题,在面试中脱颖而出。
1. 实现一个函数,判断一个字符串是否是回文串。
代码:
function isPalindrome(str) {
if (str === null || str.length === 0) {
return true;
}
str = str.toLowerCase();
let left = 0;
let right = str.length - 1;
while (left < right) {
if (str[left] !== str[right]) {
return false;
}
left++;
right--;
}
return true;
}
2. 实现一个函数,将一个数组中的所有元素翻转。
代码:
function reverseArray(arr) {
if (arr === null || arr.length === 0) {
return arr;
}
let left = 0;
let right = arr.length - 1;
while (left < right) {
let temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
return arr;
}
3. 实现一个函数,在一个数组中查找最大值。
代码:
function findMax(arr) {
if (arr === null || arr.length === 0) {
return null;
}
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
4. 实现一个函数,在一个数组中查找最小值。
代码:
function findMin(arr) {
if (arr === null || arr.length === 0) {
return null;
}
let min = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
5. 实现一个函数,将一个数组中的所有偶数元素提取到一个新数组中。
代码:
function extractEvenNumbers(arr) {
if (arr === null || arr.length === 0) {
return [];
}
let evenNumbers = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 === 0) {
evenNumbers.push(arr[i]);
}
}
return evenNumbers;
}
6. 实现一个函数,将一个数组中的所有奇数元素提取到一个新数组中。
代码:
function extractOddNumbers(arr) {
if (arr === null || arr.length === 0) {
return [];
}
let oddNumbers = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 !== 0) {
oddNumbers.push(arr[i]);
}
}
return oddNumbers;
}
7. 实现一个函数,在一个数组中查找一个元素的索引。
代码:
function findIndexOfElement(arr, element) {
if (arr === null || arr.length === 0) {
return -1;
}
for (let i = 0; i < arr.length; i++) {
if (arr[i] === element) {
return i;
}
}
return -1;
}
8. 实现一个函数,在一个数组中删除一个元素。
代码:
function removeElement(arr, element) {
if (arr === null || arr.length === 0) {
return [];
}
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== element) {
newArr.push(arr[i]);
}
}
return newArr;
}
9. 实现一个函数,在一个数组中添加一个元素。
代码:
function addElement(arr, element) {
if (arr === null) {
return [element];
}
let newArr = [...arr, element];
return newArr;
}
10. 实现一个函数,在一个数组中更新一个元素。
代码:
function updateElement(arr, element, index) {
if (arr === null || arr.length === 0 || index < 0 || index >= arr.length) {
return arr;
}
arr[index] = element;
return arr;
}