Javascript更改Typeof

时间:2017-06-07 20:07:57

标签: javascript

我是JavaScript新手,

我的代码允许我列出json文档的元素及其类型,并将其全部用字符串 donnees_types 连接起来。

问题是javascript中的typeof只返回数字和字符串的字符串。我想返回double而不是number和varchar而不是string来获取:

温度双,湿润双,内置varchar,火变色

我知道我可以使用replace替换我的字符串,但还有其他方法可以更改typeof吗?

 var event = {
  "temperature" : 12.45,
  "humidite" : 45.78,
  "built" : "charone",
  "fire" : "chartwo",
  "topic" : "sk1_001/data"
 };
 
var keys = Object.keys(event);

donnees_types = "";
 
for(var i= 0; i < keys.length -1; i++)
donnees_types +=  keys[i] + " " +  typeof(event[keys[i]]) + ", ";

var donnees_t = donnees_types.substring(0, donnees_types.length - 2);
console.log(donnees_t);
 

3 个答案:

答案 0 :(得分:1)

不,您无法更改typeof。您可以编写自己的函数来映射到您想要的输出。

&#13;
&#13;
function typeLabel(o){
  switch(typeof(o)){
    case "number" :
      return "double";
    case "string":
      return "varchar";
    default : 
      return typeof(o);
  }
}
var event = {
  "temperature" : 12.45,
  "humidite" : 45.78,
  "built" : "charonea",
  "fire" : "chartwo",
  "topic" : "sk1_001/data"
 };
 
var keys = Object.keys(event);

donnees_types = "";
 
for(var i= 0; i < keys.length -1; i++)
donnees_types +=  keys[i] + " " +  typeLabel(event[keys[i]]) + ", ";

var donnees_t = donnees_types.substring(0, donnees_types.length - 2);
console.log(donnees_t);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

请看下面 - 但要注意isNaN的一些工件(参见文档)

&#13;
&#13;
 var event = {
  "temperature" : 12.45,
  "humidite" : 45.78,
  "built" : "charone",
  "fire" : "chartwo",
  "topic" : "sk1_001/data"
 };
 
var keys = Object.keys(event);

donnees_types = "";
 
for(var i= 0; i < keys.length -1; i++)
donnees_types +=  keys[i] + " " +  (isNaN(event[keys[i]])?'varchar':'double') + ", ";

var donnees_t = donnees_types.substring(0, donnees_types.length - 2);
console.log(donnees_t);

 
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以通过执行一些额外的工作来获得所需的功能,以根据typeof返回的内容和某些自定义逻辑进一步对值进行分类,但您无法更改{{1}的功能本身。

<强>伪代码:

typeof

你遇到这个问题的原因是JavaScript是一个松散的类型&#34;语言 。 。 。它不能在详细级别识别数据类型,而是将它们分组到更广泛的类别中。这些类别是if `typeof` foo is `number` if `<insert integer rules here>` then foo is an integer else if `<insert float rules here>` then foo is a float else if . . . 返回值的基础。

您可以阅读有关typeof here和JavaScript here的更多信息,以获取您可以预期的快速列表,以下是typeof将返回的值你:

typeof