我想编写一个函数,在每两个奇数之间插入破折号 (' - ') 并在每两个偶数之间插入星号 (' * ')。例如:
Input: 99946
Output: 9-9-94*6
Input: 24877
Output: 2*4*87-7
我的尝试
function dashAst (para) {
let stringArray = para.toString().split('');
let numbArray = stringArray.map(Number);
for (let i = 0; i<numbArray.length; i++) {
if (numbArray[i] %2 === 0 && numbArray[i+1] % 2 === 0) {
numbArray.splice(numbArray.indexOf(numbArray[i]), 0, '*')
}
else if (numbArray[i] %2 !== 0 && numbArray[i+1] %2 !== 0) {
numbArray.splice(numbArray.indexOf(numbArray[i]), 0, '-')
}
}
return numbArray
}
当我尝试调用该函数时,它什么都不返回。例如,我单独测试了 splice-command,它似乎是正确的,这让我更加困惑。感谢大家阅读,甚至帮助初学者。
循环遍历一个在循环期间改变其长度的数组可能会非常混乱(i
每次都需要调整splice
)。创建新的结果变量更容易:
function dashAst(para) {
const stringArray = para.toString().split('');
const numbArray = stringArray.map(Number);
let result = "";
for (let i = 0; i < numbArray.length; i++) {
const n = numbArray[i], next = numbArray[i + 1];
result += n;
if (n % 2 == next % 2) {
result += n % 2 ? '-' : '*';
}
}
return result;
}
console.log(dashAst(99946)); // "9-9-94*6"
console.log(dashAst(24877)); // "2*4*87-7"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句