【问题标题】:How to get two digit numbers from alphabet assigned numbers如何从字母分配的数字中获取两位数字
【发布时间】:2017-12-16 11:29:18
【问题描述】:

朋友们好,我有来自其他开发人员的代码。

但是我想做一个这样的函数,但是我得到一个错误,Y 没有定义

function nameNum(){

    A = I = J = Q = Y = 1;
    B = K = R = 2;
    C = G = L = S = 3;
    D = M = T = 4;
    E = H = N = X = 5;
    U = V = W = 6;
    O = Z = 7;
    F = P = 8;

    var text = "BANISETTINIRANJAN";
    text = text.replace(/[^a-z]/gi, '');
    text = text.toUpperCase();
    var letters = text.split("")

    var num = (letters.reduce(function(prev, curr) {
        return prev + window[curr];
    }, 0));
    return nameNum();

但是我得到一个错误,比如 Y 没有定义

【问题讨论】:

  • Y 未定义,因为您尚未创建变量。例如var Y=null
  • 您可能希望在A = I = 1; 前面加上var。也很确定你想返回num var,而不是从nameNum() 中调用nameNum()。并用}正确关闭函数定义。
  • 您可能还想将文本作为参数传递,否则function nameNum() { return 47; } 会做同样的事情:)

标签: javascript node.js


【解决方案1】:
function nameNum() {
                var x = {A:1, I:1, J:1, Q:1, Y:1, B:2, K:2, R:2, C:3, G:3, 
                L:3, S:3, D:4, M:4, T:4, E:5, H:5, N:5, X:5, U:6, V:6, W:6, 
                O:7, Z:7, F:8, P:8};

                var name = "Bani Naveen";
                var nameScore = 0;
                var name = name.replace(/[^a-z]/gi, '');
                    name = name.toUpperCase();
                    var letters = name.split("")

                for( var i = 0; i < letters.length; i++ )
                {
                    var curChar = name.charAt( i );
                    var curValue = x[ curChar ];
                    nameScore = nameScore + curValue;
                }//for()

                console.log("your name number will be" + nameScore);
                return nameScore;
             }

【讨论】:

    【解决方案2】:

    返回调用错误,函数未正确关闭

    1. 不要在一个函数中使用 return 调用同一个函数
    2. 在函数Y内部定义了一个

    更新

    用函数发送名字

    function nameNum(name) {
    
     A = I = J = Q = Y = 1;
      B = K = R = 2;
      C = G = L = S = 3;
      D = M = T = 4;
      E = H = N = X = 5;
      U = V = W = 6;
      O = Z = 7;
      F = P = 8;
    console.log('y is '+Y)
      var text = name;
      text = text.replace(/[^a-z]/gi, '');
      text = text.toUpperCase();
      var letters = text.split("")
    
      var num = (letters.reduce(function(prev, curr) {
        return prev + window[curr];
      }, 0));
      
      return num;
     
    }
    
    console.log(nameNum('bani'))

    已更新 githup 链接解决方案

    只需删除var

    var mennt = 'bani'; 
    
    function nameNum(name) {
     A = I = J = Q = Y = 1; //remove the var in this line 
      B = K = R = 2;
      C = G = L = S = 3;
      D = M = T = 4;
      E = H = N = X = 5;
      U = V = W = 6;
      O = Z = 7;
      F = P = 8;
    
      var text = name;
      text = text.replace(/[^a-z]/gi, '');
      text = text.toUpperCase();
      var letters = text.split("")
    
      var num = (letters.reduce(function(prev, curr) {
        return prev + window[curr];
      }, 0));
    
      return num;
    
    }
    
    var naNumber = nameNum(mennt);
    console.log(naNumber);

    【讨论】:

    • 嘿 Prasad 我怎样才能得到文本号码。就像我在 var text = "BANISETTINIRANJAN"; 中输入任何名称“bani”一样然后我得到分配给每个字母的数字
    • 如果我输入 Bani 我会得到 9
    • 感谢@prasad 帮助我。但我遇到了另一个错误。我的代码仍然没有定义 Y。 gist.github.com/baninaveen/7d3a34a8e49eb902cea4db5cb2275346
    • 仍然出现错误我不知道为什么这是错误图像ibb.co/iUvqkF
    • 仍然没有定义 Y 请帮帮我
    猜你喜欢
    • 2022-07-13
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多