0

我正在尝试获取一个带有数字的字符串,如果前一个数字和后一个数字之间存在匹配,则将其添加到总和中,因此 55412 将是 5,而 112332 将是 1 + 3 所以 4。这是用打字稿编码的,问题是我的代码没有输出任何东西。

function uipath(e, arg)
{
  let stringToInt = new StringToInt("5514133");
  stringToInt.charCompareAndSum();
  stringToInt.stringSplit();
  alert (stringToInt.getSumList.toString);
}

class StringToInt
{
  private argumentString : string ;
  private numberArr : Array<string>;
  private sumList : number;

  constructor( arg: string)
  {
    this.argumentString = arg ;
  }

  stringSplit()
  {
    this.numberArr = this.argumentString.split(/(?=.)/u);
  }

  charCompareAndSum()
  {
    for(var i = 0; i < this.numberArr.length -1; i++ )
    {
      if (this.numberArr[i] == this.numberArr[i+1])
      {
        this.sumList = this.sumList + +this.numberArr[i];
      }
    }    
  }

  get getSumList():number
  {
    return this.sumList;
  }
}

输出应该是 8。

4

1 回答 1

1

除非我遗漏了什么,否则您需要调用您的函数:

stringToInt.getSumList.toString

应该

stringToInt.getSumList().toString()

我猜这不会打印,因为

stringToInt.getSumList

getSumList对函数本身求值,然后

getSumList.toString

评估为,undefined因为该函数没有toString属性。

于 2017-12-05T16:00:04.720 回答