为什么根据codewars此函数返回“'\'1 \”?

时间:2019-04-22 15:34:55

标签: javascript

因此,我正在尝试解决此代码战问题(https://www.codewars.com/kata/5518a860a73e708c0a000027/train/javascript),但不是我的函数返回诸如“ 1”的常规字符串,而是返回了诸如“'\'1 \”“的内容,根据密码战。为什么是这样?我的代码如下:

function lastDigit(as){ 
  var product = "1";
  for(var i = as.length - 1; i >= 0; i--){
    var num = as[i]
    //console.log(num)
    //console.log(bigPower(num.toString(), product))
    product = bigPower(as[i].toString(), product);
  }
  var prodArr = product.split("");
  console.log(prodArr[prodArr.length - 1].toString());
  return prodArr[prodArr.length - 1].toString();
}


function bigPower(base, exponent){
  var product = base;
  for(var i = 1; i < parseInt(exponent); i++){
    product = multiply(product.toString(), base.toString());
  }
  return product;
}



function multiply(a, b) {
    const product = Array(a.length+b.length).fill(0);
    for (let i = a.length; i--; null) {
        let carry = 0;
        for (let j = b.length; j--; null) {
            product[1+i+j] += carry + a[i]*b[j];
            carry = Math.floor(product[1+i+j] / 10);
            product[1+i+j] = product[1+i+j] % 10;
        }
        product[i] += carry;
    }
    return product.join("").replace(/^0*(\d)/, "$1");
}

1 个答案:

答案 0 :(得分:0)

parseInt语句中使用return函数来解析字符串并以整数形式返回。

  return parseInt(prodArr[prodArr.length - 1].toString());

function lastDigit(as){ 
  var product = "1";
  for(var i = as.length - 1; i >= 0; i--){
    var num = as[i]
    product = bigPower(as[i].toString(), product);
  }
  var prodArr = product.split("");
  return parseInt(prodArr[prodArr.length - 1].toString());
}


function bigPower(base, exponent){
  var product = base;
  for(var i = 1; i < parseInt(exponent); i++){
    product = multiply(product.toString(), base.toString());
  }
  return product;
}

function multiply(a, b) {
    const product = Array(a.length+b.length).fill(0);
    for (let i = a.length; i--; null) {
        let carry = 0;
        for (let j = b.length; j--; null) {
            product[1+i+j] += carry + a[i]*b[j];
            carry = Math.floor(product[1+i+j] / 10);
            product[1+i+j] = product[1+i+j] % 10;
        }
        product[i] += carry;
    }
    return product.join("").replace(/^0*(\d)/, "$1");
}
console.log(lastDigit([3, 4, 2]))