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

45 篇文章 6 订阅
11 篇文章 0 订阅

练习题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数组的理解和技能水平。

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿猫的故乡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值