Javascript 仅在每组奇数之前和之后添加破折号

Javascript 仅在每组奇数之前和之后添加破折号,javascript,Javascript,我只需要在每组奇数之前和之后添加破折号。 我正在尝试,但效果不太好: function addDashes(num) { return num.toString(). replace(/([13579])/g,'-$1-'). // dashes around odd digits replace(/\-+/g,'-'). // replace multiple dashes by one dash replace(/^\-/,''). // remo

我只需要在每组奇数之前和之后添加破折号。 我正在尝试,但效果不太好:

function addDashes(num) {
    return num.toString().
      replace(/([13579])/g,'-$1-'). // dashes around odd digits
      replace(/\-+/g,'-'). // replace multiple dashes by one dash
      replace(/^\-/,''). // remove starting dash
      replace(/\-$/,''); // remove ending dash
}
我明白了:

console.log(addDashes(645545965)); // '64-5-5-4-5-9-6-5'
console.log(addDashes(411222333)); // '4-1-1-222-3-3-3'
console.log(addDashes(81229576231)); // '8-1-22-9-5-7-62-3-1'
但我需要这个:

console.log(addDashes(645545965)); // '64-55-4-59-6-5'
console.log(addDashes(411222333)); // '4-11-222-333'
console.log(addDashes(81229576231)); // '8-1-22-957-62-31'

你做的每件事都是对的,而不是重复一次

([13579]+)
我的意思是,如果你有两个数字从13579个以上的时间,那么你只是考虑它的一个组,并加入周围的群体。 函数addDashesnum{ 返回数 .托斯特林 .replace/[13579]+/g,-$1-//奇数位周围的破折号 .replace/\-+/g,-//用一个破折号替换多个破折号 .更换/^ \-/,//拆下起始破折号 .replace/\-$/,;//删除结束划线 } console.logaddDashes645545965; console.logadddashse411222333;
console.logaddDashes81229576231 我很好奇如何通过reduce来实现这一点,所以这里是这个方法

函数addDashesnum{ return+num.split.reduceac,n=>{ 设len=acc.length,p=+acc[len-1]; 如果len==0返回[n];否则如果n%2+p%2!=1 acc[len-1]+=n;否则acc.pushn; 返回acc },[]加入-; } console.logaddDashes645545965; console.logadddashse411222333;
console.logaddDashes81229576231;我觉得这个问题不太适合我。这是更多的内容。@rsmeral在当前表单中,这个问题对于代码审查来说是离题的,因为该站点是用于审查工作代码的。在推荐用户之前,请先阅读该网站的内容。非常感谢!