JavaScript Katas:将数字数组拆分为奇数和偶数

2025-06-09

JavaScript Katas:将数字数组拆分为奇数和偶数

简介🌐

今天,我开始一个有关代码套路的新系列。

我将采用各个级别的有趣的 kata 并解释如何解决它们。

解决问题是一项重要技能,对您的职业和整个生活都如此。

你最好学会解决问题!


来源

我从不同的来源获取了有关 kata 的想法并重新编写了它们。

今日来源:Codewars


理解练习❗

首先,我们需要了解这项练习!

这是(软件)工程的关键部分。

再次查看练习说明,直到你 100% 理解为止。

不要试图在这里节省时间。

我的方法是:

  1. 输入:我输入什么?
  2. 输出:我想要得到什么?

今天的练习

编写一个函数splitOddAndEven,接受一个参数:numbers一个正数数组。

该函数应返回一个包含两个数组的对象,一个用于所有odd数字,一个用于所有even数字。


输入:一个数字数组。

输出:一个包含两个数字数组的对象,一个用于奇数,一个用于偶数。


思考解决方案💭

我想我理解了这项练习(=我为这项功能投入了什么以及我希望从中得到什么)。

现在,我需要从输入到输出的具体步骤。

我尝试一步步地做到这一点。

  • 循环输入数组
  • 如果数字为奇数,则将其保存在变量中odd
  • 如果数字是偶数,则将其保存在变量中even
  • 返回oddeven在对象中

例子:

  • 输入:[1, 2, 3]
  • 第 1 轮:odd = [1]//数组中的第一个数字是 1,它是奇数,因此进入奇数数组
  • 第 2 轮:even = [2]//数组中的第二个数字是 2,它是偶数,因此进入偶数数组
  • 第三轮:odd = [1, 3]//数组中的第三个数字是 3,它是奇数,因此也进入奇数数组
  • 输出:{ odd: [1, 3], even: [2] }//将奇数数组和偶数数组放入一个对象中

实现(for循环)⛑

function splitOddAndEven(numbers) {
  let odd = [];
  let even = [];

  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      // number is even
      even.push(numbers[i]);
    } else {
      // number is not even (=odd)
      odd.push(numbers[i]);
    }
  }

  // create an object with the odd and even array in it
  const returnObject = {
    odd,
    even,
  };

  return returnObject;
}
Enter fullscreen mode Exit fullscreen mode

结果

console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }

console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
Enter fullscreen mode Exit fullscreen mode

实现(for of 循环)⛑

function splitOddAndEven(numbers) {
  let odd = [];
  let even = [];

  for (const number of numbers) {
    if (number % 2 === 0) {
      // number is even
      even.push(number);
    } else {
      // number is not even (=odd)
      odd.push(number);
    }
  }

  // create an object with the odd and even array in it
  const returnObject = {
    odd,
    even,
  };

  return returnObject;
}
Enter fullscreen mode Exit fullscreen mode

结果

console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }

console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
Enter fullscreen mode Exit fullscreen mode

实现(功能)⛑

function splitOddAndEven(numbers) {
  // filter out the odd numbers
  const odd = numbers.filter((number) => number % 2 === 1);

  // filter out the even numbers
  const even = numbers.filter((number) => number % 2 === 0);

  // create an object with the odd and even array in it
  const returnObject = {
    odd,
    even,
  };

  return returnObject;
}
Enter fullscreen mode Exit fullscreen mode

结果

console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }

console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
Enter fullscreen mode Exit fullscreen mode

游乐场⚽

你可以在这里试用一下代码


下一部分➡️

干得好,伙计!

下次,我们将解答下一个套路。敬请期待!

如果我需要解决特定的 kata,请在这里给我留言

我很乐意与您联系!


进一步阅读📖


问题❔

  • 你喜欢解决 katas 吗?
  • 您更喜欢哪种实现?为什么?
  • 还有其他解决方案吗?
鏂囩珷鏉ユ簮锛�https://dev.to/miku86/javascript-katas-split-a-number-array-into-odd-and-even-numbers-1kc0
PREV
Vue CLI 3.0 插件,用于使用 Atomic Design 和 Storybook 创建应用程序
NEXT
👨‍🎓️📊 数据科学家——从初学者到专业人士的 12 个步骤