问题描述
我正在执行此作业:
编写一个名为snapCrackle的函数,该函数带有一个参数:maxValue。 此函数应循环1到maxValue(包括)和 使用以下条件构建字符串:如果数字为奇数, 将“对齐”连接到字符串的末尾。如果数字是一个 5的倍数,将“ Crackle”连接到字符串的末尾。如果一个 数字既是奇数又是5的整数倍,并串联“ SnapCrackle”,以 字符串的结尾。如果数字既不是奇数也不是5的倍数, 将数字和“,”连接到字符串的末尾。这个 函数应该console.log()maxValue之后的最后一个字符串 循环的迭代。
这是我的解决方案:
let c = "Snap,";
let i = "Crackle,";
let x = "SnapCrackle,";
let b = ",";
let maxValue = 20;
let counter = 1;
let output = "";
let list = ["snap","crackle","snapCrackle"];
function snapCrackle() {
while (counter <= maxValue) {
if (counter % 5 === 0 && counter % 2 !== 0) {
console.log(x + counter);
} else if (counter % 5 === 0) {
console.log(i + counter);
} else if (counter % 5 === 0 || counter % 2 !== 1) {
console.log(counter + b);
} else if (counter % 2 !== 0) {
console.log(c + counter);
}
counter++;
}
}
console.log();
return snapCrackle();
let results = " ";
console.log(snapCrackle());
有人告诉我:
一个好的开始!您拥有所需的一切,但应该是一个 串。对于Snap,Crackle和SnapCrackle,您不应显示 旁边的数字,尽管我感谢...的聪明和努力 它。我将提供解决此问题的提示是创建一个空字符串 并将结果连接起来!
如何将计数器推到数组,以便可以console.log
一行,或者如何使函数本身输出一行?
解决方法
您已经做了所有的努力。进行较小的更改,您的答案就会很好。
let c = "Snap";
let i = "Crackle";
let x = "SnapCrackle";
let maxValue = 20;
let counter = 1;
// let output = ""; // not required rather use an array
// let list = ["snap","crackle","snapCrackle"]; // not required
let outPutArr = [];
function snapCrackle() {
while (counter <= maxValue) {
if (counter % 5 === 0 && counter % 2 !== 0) {
outPutArr.push(x);
} else if (counter % 5 === 0) {
outPutArr.push(i);
} else if (counter % 5 === 0 || counter % 2 !== 1) {
outPutArr.push(counter);
} else if (counter % 2 !== 0) {
outPutArr.push(c);
}
counter++;
}
return outPutArr // return the created array from conditions
}
console.log(snapCrackle().join()); // Return the join of the array