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"));