我是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);
答案 0 :(得分:1)
不,您无法更改typeof
。您可以编写自己的函数来映射到您想要的输出。
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;
答案 1 :(得分:0)
请看下面 - 但要注意isNaN的一些工件(参见文档)
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;
答案 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