Trying to insert dashes between 2 odd numbers.Error: Illegal return statement
Trying to insert dashes between 2 odd numbers.Error: Illegal return statement
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"));
您可以从数组的末尾开始迭代,因为您可能会插入一个破折号,并且数组会获得新的长度。
如果从末尾开始,则不会更改符合测试条件和插入破折号的项目的长度。
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"));
您可以使用 String#replace with a regular expression with a lookahead:
function insertDash(string) {
return string.replace(/([13579](?=[13579]))/g, "-");
}
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"));
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"));
您可以从数组的末尾开始迭代,因为您可能会插入一个破折号,并且数组会获得新的长度。
如果从末尾开始,则不会更改符合测试条件和插入破折号的项目的长度。
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"));
您可以使用 String#replace with a regular expression with a lookahead:
function insertDash(string) {
return string.replace(/([13579](?=[13579]))/g, "-");
}
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"));