创建一个对给定字符串执行数学运算的函数

时间:2021-06-03 05:57:35

标签: javascript function loops if-statement

问题是一个由 3 部分组成的问题,它要求我创建一个名为 addOne 的函数,该函数将一个数字作为参数并在其中添加一个,然后创建一个名为 minusOne 的函数,该函数接收一个数字参数并从中减去一个。之后,我必须创建一个名为 usePotions 的函数,该函数接受一个字符串作为参数,如果字符串中包含字符“A”,则您需要在“A”之前的数字上使用 addOne 函数(如果可用)。如果字符串中包含字符“B”,则需要在“B”之前的数字上使用subtractOne 函数(如果可用)。您还想从字符串中删除字母,如果可用,只需返回对数字执行的数学运算的字符串。这是我目前所拥有的:

function addOne (num) {
  num += 1;
  return num
}

function subtractOne(num1) {
  num1 -= 1;
  return num
}


function usePotions(string) {
  
  let newArray = [];
  
  
    for (let i = 0; i < string.length; i++) {
    if (typeof string[i] === "A" && typeof string[i-1] === "number") {
       newArray.push(addOne(string[i-1]));
    } else if (typeof string[i] === "B" && typeof string[i-1] === "number") {
      newArray.push(subtractOne(string[i-1]));
    } else if (typeof string[i] === "number"){
        newArray.push(string[i]);
      }
}
  return newArray.join('');
}
 console.log(usePotions("3A78B51"))

*当我尝试检查数组是否正在将值传递给它时,数组仍然是空的,我不知道为什么。感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的 addOne 函数将不起作用,因为向字符串添加任何内容都会导致 JS 中的字符串。

'1' + 1 = '11'。因此,您必须在添加之前将字符串转换为数字。

还有 typeof string[i-1] 将始终返回 string。您需要一些其他方法来检查字符是否为数字。

这是您的固定代码:

function addOne (num) {
  return num * 1 + 1
}

function subtractOne(num) {
  return num - 1
}


function usePotions(string) {
  
  let newArray = [];
  let digit = /\d/
  
  
  for (let i = 0; i < string.length; i++) {
    if (string[i] === "A" && digit.test(string[i-1])) {
        newArray.pop();
        newArray.push(addOne(string[i-1]));
    } else if (string[i] === "B" && digit.test(string[i-1])) {
        newArray.pop();
        newArray.push(subtractOne(string[i-1]));
    } else if (digit.test(string[i])) {
        newArray.push(string[i]);
    }
  }
  
  return newArray.join('');
}
console.log(usePotions("3A78B51"))

答案 1 :(得分:0)

function convert(str){ 
  let no = parseInt(str); 
  if(isNaN(no))
    return str; 
  
  let s = str.replace(no,''); 

  let finalStr = s.startsWith("A") ? `${no+1}${s}` : `${no-1}${s}`; 

  return finalStr;

}

console.log(convert("12Bbcd"));//11Abcd
console.log(convert("12Abcd"));//13Abcd
相关问题