2017-06-07 8 views
0

私は、Javascriptの変更TYPEOF

私のコードは、JavaScriptで新しい私はJSON文書の要素だけでなく、そのタイプをリストすることができ、そしてそのすべての文字列にdonnees_typesを連結しています。

JavaScriptのtypeofは、数字と文字列の文字列のみを返すという問題があります。私が取得するために、代わりに番号のとvarchar文字列の代わりに、二重返すようにしたい:私は交換してください使用して、私の文字列に置き換えることができます知っている

温度ダブル、humiditeダブル、構築されたvarchar型、火災varchar型

をしているが、タイプを変更する他の方法がありますか?

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

いいえ、あなたが変更することはできません。

あなたはtypeofhereについての詳細を読むことができるとJavaScriptがhereを入力するには、あなたが期待できるかの簡単なリストについては、こちらをtypeofはあなたに戻ります値は、 'typeof'の動作です。この[質問]を参照してください(https://stackoverflow.com/questions/17333761/changing-the-behaviour-of-the-typeof-operator-in-javascript) –

+0

JavaScriptには「double」型がありません。 'typeof parseFloat(" 2.33 "); // "number" ' –

+0

[Javascriptでtypeof演算子の動作を変更する]の可能な複製(https://stackoverflow.com/questions/17333761/changing-the-behaviour-of-the-typeof-operator-in- javacript) – Dinei

答えて

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);

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); 
 

 

0

あなたは、その機能を得ることができるかもしれませんいくつかの追加作業をして、 typeofが返すものとカスタムロジックがありますが、typeof自体の機能を変更することはできません。

擬似コード:

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 . . . 

あなたはこのに実行されている理由は、JavaScriptを「ルーズ」言語であるということです。 。 。詳細なレベルのデータ型を認識するのではなく、それらをより広いカテゴリにグループ化します。これらのカテゴリは、typeofが返す値の基礎となります。

Type           Result 

Undefined          "undefined" 
Null           "object" 
Boolean          "boolean" 
Number           "number" 
String           "string" 
Symbol           "symbol" 
Host object (provided by the JS environment) Implementation-dependent 
Function object        "function" 
Any other object        "object"