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

Javascript 创建对给定字符串执行数学运算的函数,javascript,function,loops,if-statement,Javascript,Function,Loops,If Statement,这个问题是一个由三部分组成的问题,它要求我创建一个名为addOne的函数,该函数将一个数字作为参数,并向其中添加一个,然后创建一个名为subtractOne的函数,该函数将一个数字参数减去一个。之后,我必须创建一个名为usePotions的函数,该函数以字符串作为参数,如果字符串中包含字符“a”,则需要在“a”之前的数字上使用addOne函数(如果可用)。如果字符串中包含字符“B”,则需要在“B”之前的数字上使用减法一函数(如果可用)。您还希望从字符串中删除字母,并返回字符串,如果该字符串可用,

这个问题是一个由三部分组成的问题,它要求我创建一个名为addOne的函数,该函数将一个数字作为参数,并向其中添加一个,然后创建一个名为subtractOne的函数,该函数将一个数字参数减去一个。之后,我必须创建一个名为usePotions的函数,该函数以字符串作为参数,如果字符串中包含字符“a”,则需要在“a”之前的数字上使用addOne函数(如果可用)。如果字符串中包含字符“B”,则需要在“B”之前的数字上使用减法一函数(如果可用)。您还希望从字符串中删除字母,并返回字符串,如果该字符串可用,则返回对数字执行的数学运算。这就是我到目前为止所做的:

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"))
函数addOne(num){
num+=1;
返回数
}
函数减法1(num1){
num1-=1;
返回数
}
函数使用药剂(字符串){
设newArray=[];
for(设i=0;i

*当我试图检查数组是否获得传递给它的值时,数组仍然是空的,我不知道为什么。谢谢你的帮助

您的
addOne
函数无法工作,因为向字符串添加任何内容都会导致JS中的字符串

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

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

这是您的固定代码:

函数addOne(num){
返回数*1+1
}
函数减法一(num){
returnnum-1
}
函数使用药剂(字符串){
设newArray=[];
让数字=/\d/
for(设i=0;i
您必须重新考虑逻辑的一部分。字符串中的每个字符都是字符串类型,不管它看起来像数字。感谢您的帮助@Ckcmoney24欢迎您。如果有帮助,别忘了将其标记为答案。问你@Stalinko我将如何修改digit.test语句,这样我就不会重复刚才添加到的同一个数字(例如,在本代码中,如果我希望返回值为“47751”)@Ckcmoney24那么你必须更改算法。我看到的最简单的方法是:在按下之前,只需从
newArray
中弹出最后一个数字。我已经更新了我的代码。明白了,我想这个方法最终会弹出一个我真正想要的字符,所以我有点忽略了,哈哈。谢谢你的帮助,老兄,我已经做了一段时间了,什么都做不到
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