返回

精进JS基础,助力面试高频题攻克:32个手写JS难题剖析

前端

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;
}