JavaScript Katas:将数字数组拆分为奇数和偶数
简介🌐
今天,我开始一个有关代码套路的新系列。
我将采用各个级别的有趣的 kata 并解释如何解决它们。
解决问题是一项重要技能,对您的职业和整个生活都如此。
你最好学会解决问题!
来源
我从不同的来源获取了有关 kata 的想法并重新编写了它们。
今日来源:Codewars
理解练习❗
首先,我们需要了解这项练习!
这是(软件)工程的关键部分。
再次查看练习说明,直到你 100% 理解为止。
不要试图在这里节省时间。
我的方法是:
- 输入:我输入什么?
- 输出:我想要得到什么?
今天的练习
编写一个函数splitOddAndEven
,接受一个参数:numbers
一个正数数组。
该函数应返回一个包含两个数组的对象,一个用于所有odd
数字,一个用于所有even
数字。
输入:一个数字数组。
输出:一个包含两个数字数组的对象,一个用于奇数,一个用于偶数。
思考解决方案💭
我想我理解了这项练习(=我为这项功能投入了什么以及我希望从中得到什么)。
现在,我需要从输入到输出的具体步骤。
我尝试一步步地做到这一点。
- 循环输入数组
- 如果数字为奇数,则将其保存在变量中
odd
- 如果数字是偶数,则将其保存在变量中
even
- 返回
odd
并even
在对象中
例子:
- 输入:
[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;
}
结果
console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }
console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
实现(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;
}
结果
console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }
console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
实现(功能)⛑
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;
}
结果
console.log(splitOddAndEven([1, 2, 3]));
// { odd: [ 1, 3 ], even: [ 2 ] }
console.log(splitOddAndEven([0, 3, 5]));
// { odd: [ 3, 5 ], even: [ 0 ] }
游乐场⚽
你可以在这里试用一下代码
下一部分➡️
干得好,伙计!
下次,我们将解答下一个套路。敬请期待!
如果我需要解决特定的 kata,请在这里给我留言。
我很乐意与您联系!
进一步阅读📖
问题❔
- 你喜欢解决 katas 吗?
- 您更喜欢哪种实现?为什么?
- 还有其他解决方案吗?