掌握JavaScript数组:五个挑战性练习题提升你的技能水平

发布时间:2023年12月27日

练习题1: "查找重复元素"

  • 给定一个只包含数字的数组,找出其中重复出现的数字。

练习题2: "正数之和"

  • 给定一个整数数组,计算其中所有正数的和。

练习题3: "数组交集"

  • 给定两个数组,找出它们的交集并返回一个新的数组。

练习题4: "数组分块"

  • 给定一个数组和一个大小值,将数组按照指定的大小分割成多个子数组。

练习题5: "数组旋转"

  • 给定一个数组和一个旋转值,将数组向右旋转指定的次数。

代码以下:

练习题1: "查找重复元素"

问题描述:给定一个只包含数字的数组,找出其中重复出现的数字。

const findDuplicates = (arr) => {
  const duplicates = [];
  arr.forEach((value, index) => {
    if (arr.indexOf(value) !== index && !duplicates.includes(value)) {
      duplicates.push(value);
    }
  });
  return duplicates;
};

const numbers = [1, 2, 3, 4, 4, 5, 6, 6];
console.log(findDuplicates(numbers)); // 输出 [4, 6]

练习题2: "正数之和"

问题描述:给定一个整数数组,计算其中所有正数的和。

const sumPositiveNumbers = (arr) => {
  return arr.reduce((sum, currentValue) => {
    if (currentValue > 0) {
      return sum + currentValue;
    }
    return sum;
  }, 0);
};

const numbers = [-1, 2, -3, 4, 5, -6];
console.log(sumPositiveNumbers(numbers)); // 输出 11

练习题3: "数组交集"

问题描述:给定两个数组,找出它们的交集并返回一个新的数组。

const findIntersection = (arr1, arr2) => {
  return arr1.filter(value => arr2.includes(value));
};

const array1 = [1, 2, 3, 4, 5];
const array2 = [4, 5, 6, 7, 8];
console.log(findIntersection(array1, array2)); // 输出 [4, 5]

练习题4: "数组分块"

问题描述:给定一个数组和一个大小值,将数组按照指定的大小分割成多个子数组。

const chunkArray = (arr, size) => {
  const chunkedArr = [];
  for (let i = 0; i < arr.length; i += size) {
    const chunk = arr.slice(i, i + size);
    chunkedArr.push(chunk);
  }
  return chunkedArr;
};

const array = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(chunkArray(array, 3)); // 输出 [[1, 2, 3], [4, 5, 6], [7, 8]]

练习题5: "数组旋转"

问题描述:给定一个数组和一个旋转值,将数组向右旋转指定的次数。

const rotateArray = (arr, rotations) => {
  const normalizedRotations = rotations % arr.length;
  const rotatedArr = [...arr.slice(-normalizedRotations), ...arr.slice(0, -normalizedRotations)];
  return rotatedArr;
};

const array = [1, 2, 3, 4, 5];
console.log(rotateArray(array, 2)); // 输出 [4, 5, 1, 2, 3]

上述代码使用了ES6最新的语法来解决每个练习题。它们提供了解决问题的逻辑,帮助你提高对JavaScript数组的理解和技能水平。

文章来源:https://blog.csdn.net/weixin_70007095/article/details/135229242
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。