【问题标题】:How to identify any string?如何识别任何字符串?
【发布时间】:2018-08-31 02:31:18
【问题描述】:

一个数组随机显示 3 个数字,我不得不编写一个代码来对 3 个数字求和,但数组有时会显示一个字符串:

[96, ".!asd", 182]
["@#$%", 5, 43]
[64, "bd", 48]

如果数组中有字符串,我想使用返回“无效”的“if”。

if (...){
    return not valid
}

拜托,如果有办法识别任何字符串,你能告诉我代码吗?

【问题讨论】:

    标签: javascript arrays string random numbers


    【解决方案1】:

    您可以使用NaN 来确定是否所有元素都是数字,方法是使用一元加号将字符串转换为数字。如果成功,你会得到一个求和的数字,如果没有,则返回 NaN 并求和。单个NaN 破坏了结果,结果是NaN

    function not(fn) {
        return function (v) {
            return !fn(v);
        };
    }
    
    function sum(array) {
        return array.reduce((a, b) => +a + +b);
    }
    
    console.log([[96, ".!asd", 182], ["@#$%", 5, 43], [64, "bd", 48], [2, 3, 5]].map(sum).filter(not(isNaN)));

    【讨论】:

      【解决方案2】:

      使用对象Number

      if (Number.isNaN(+element_in_array)) return "Not Valid!!"
      

      function sum(array) {
        if (array.some((n) => Number.isNaN(+n))) {
          return "Invalid data, at least one element is not a number.";
        }
        
        return array.reduce((a, n) => a + Number(n), 0);
      }
      
      console.log(sum([96, ".!asd", 182]))
      console.log(sum(["@#$%", 5, 43]))
      console.log(sum([64, "bd", 48]))
      console.log(sum([64, 44, 48]))

      【讨论】:

        【解决方案3】:

        您可以使用 isNaN 来确定搅拌是否为数字

        isNaN('123') //false   
        isNaN('Hello') //true    
        

        【讨论】:

          【解决方案4】:

          尝试使用 typeof 来验证您是否正在处理字符串。mdn typeof

          【讨论】:

            【解决方案5】:

            您可以使用if type(x) == str 检查变量 x 是否为字符串类型。它是一个内置函数。更多信息请参考官方python文档。

            https://docs.python.org/3/library/functions.html#type

            【讨论】:

            • Javascript,不是 Python
            【解决方案6】:

            您可以使用Array.prototype.some() 来查看您的数组是否包含NaN

            var x = [96, ".!asd", 182]
            var y = [96, 1000, 182]
            console.log(x.some(isNaN))
            console.log(y.some(isNaN))

            【讨论】:

            • 这是最有效的检查,应该是公认的答案。
            【解决方案7】:

            您应该使用isNaN 函数,如下所述:Is there a (built-in) way in JavaScript to check if a string is a valid number?

            isNaN(123)         // false
            isNaN('123')       // false
            isNaN('1e10000')   // false (This translates to Infinity, which is a number)
            isNaN('foo')       // true
            isNaN('10px')      // true
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-04-03
              • 2016-10-24
              • 2020-02-18
              • 2015-11-08
              • 1970-01-01
              • 2020-02-19
              • 2017-08-27
              相关资源
              最近更新 更多