function insertDash(str) {
var arr = str.split("");
for (var i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0 && arr[i + 1] % 2 != 0) {
var x = arr.splice(i + 1, 0, '-');
}
}
return arr;
}
console.log(insertDash("99999"));
答案 0 :(得分:0)
你可以从数组的末尾进行迭代,因为你可能会插入一个破折号并且数组会有一个新的长度。
如果从最后开始,则不会更改有资格测试和插入短划线的项目的长度。
function insertDash(string) {
var array = string.split(""),
i = array.length;
while (i--) {
if (array[i] % 2 && array[i + 1] % 2) {
array.splice(i + 1, 0, '-');
}
}
return array.join('');
}
console.log(insertDash("99999"));
console.log(insertDash("1122334455"));
答案 1 :(得分:0)
您可以将String#replace与带有lookahead的正则表达式一起使用:
function insertDash(string) {
return string.replace(/([13579](?=[13579]))/g, "$1-");
}
console.log(insertDash("99999"));
console.log(insertDash("1122334455"));
另一个选项是使用Array#reduce来创建字符串:
function insertDash(string) {
return string.split('').reduce(function(s, c, i, arr) {
return s + c + (c % 2 && arr[i + 1] % 2 ? '-' : '');
}, '');
}
console.log(insertDash("99999"));
console.log(insertDash("1122334455"));