Javascript按数字两位数序列数组

Def*_*foe 1 javascript sum letters

我坚持这个练习,最后我告诉你我的输出是什么,但在练习的描述之前,请提前感谢!

描述:

它接收一个带有数字和字母的数组,并返回它的美化数字.字母保持不变美化过程是通过将所有数字加在一起将数字减少为单个数字:

123 = 6 because 1+2+3 = 6
9 = 9
9956 = 2 because 9+9+5+6 = 29 -> 2+9 = 11 -> 1+1 = 2
793 = 1 because 7+9+3 = 19 -> 1+9 = 10 -> 1+0 = 1
Example: beautifyNumbers([23,59, 4,'A','b']) returns [5, 5, 4, 'A', 'b']
Run Code Online (Sandbox Code Playgroud)

我的代码:

function beautifyNumbers(array) {

  var newArray = [];
  array.forEach(function(element) {
    // Checks if character is a letter and not a number
    if (typeof element == "number") {
      var sNumber = element.toString();

      for (var i = 0, len = sNumber.length; i < len; i += 1) {
        newArray.push(+sNumber.charAt(i));
        // The "+" sign converts a String variable to a Number, if possible: +'21.2' equals Number(21.2).
        // If the conversion fails, it return NaN.
        // El método charAt() de String devuelve el carácter especificado de una cadena:
        // var name="Brave new world"; name.charAt(0) => 'B'
      }
      console.log(newArray);;
    } else {
      // pushes numbers to the array without making
      // any change to them
      newArray.push(element);
    }
  });
  // returns the array
  return newArray;


}

beautifyNumbers([23, 59, 4, 'A', 'b'])
Run Code Online (Sandbox Code Playgroud)

我收到的输出是=> [2, 3, 5, 9, 4, "A", "b"]

这是在做总结之前的"前一步"还是我做错了什么?

sin*_*ren 8

嗨,你可以像我在评论中提到的那样尝试.

function beautifyNumbers(array) {
  var newArray = [];
  array.forEach(function(element) {
    // Checks if character is a letter and not a number
    if (typeof element == "number") {
      if(element %9 == 0 && element != 0)
        newArray.push(9);
      else 
        newArray.push(element%9);
    } else {
      newArray.push(element);
    }
  });
  return newArray;
}
console.log(beautifyNumbers([1231, 0, 18, 27, 12354, 59, 4, 'A', 'b']))
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢@georg的建议.