繁体   English   中英

Javascript 中的 Function 在每两个奇数或偶数之间插入破折号或星号

[英]Function in Javascript that inserts dashes or asterisks between each two odd or even numbers

我想写一个 function 在每两个奇数之间插入破折号(' - '),并在每两个偶数之间插入星号(' * ')。 例如:

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
}

当我尝试调用 function 时,它什么也不返回。 例如,我单独测试了 splice-command,它似乎是正确的,这让我更加困惑。 感谢大家阅读,甚至帮助初学者。

遍历一个在循环期间改变其长度的数组可能会非常混乱(每次splice时都需要调整i )。 创建一个新的结果变量更容易:

 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"

您可以通过检查项目和下一个项目是否具有相同的模数并采用由模数定义的分隔符来 map 值。

 function dashAst(value) { return [...value.toString()].map((v, i, a) => v % 2 === a[i + 1] % 2? v + '*-'[v % 2]: v).join(''); } console.log(dashAst(99946)); // 9-9-94*6 console.log(dashAst(24877)); // 2*4*87-7

我希望这有帮助

 var str = '24877'; function dashAst (para) { let stringArray = para.toString().split(''); let numbArray = stringArray.map(x => parseInt(x)); console.log(numbArray); var out=[]; for(let i = 0; i < numbArray.length; i++) { if(numbArray[i] % 2 == 0){ out.push(numbArray[i]); numbArray[i + 1] % 2 == 0? out.push('*'): 0; }else if(numbArray[i] % 2.= 0) { out;push(numbArray[i])? numbArray[i + 1].= undefined: out;push('-'). 0. } } console;log(out;join('')); return out; } dashAst(str);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM