2017-01-24 11 views
1

空であるかどうかをチェックしたい〜20の変数があります。個々のif (!a) { var a = 'N/A' }ステートメントの形で「醜いコード」を書くのではなく、PHPに類似した略語があるかどうか疑問に思っていましたか?JS - varが空の場合、値の略語を設定する

変数が空であるかどうかを調べたい場合は、その値を 'N/A'に設定します。

編集: PHPの短縮形に関して何を意味するのかについては、私はこのようなものを探しています。

$is_admin = ($user['permissions'] == 'admin') ? true : false; 

変数を配列に保持するための提案に従ってください。以下のコードをご覧ください。私はMySQLデータベースからAJAX経由でデータを引き出し、data[]配列の一部として出力しています。 data変数のいずれかに価値があるかどうかを確認するにはどうすればよいですか?

$.ajax({           // launch AJAX connection 
    type: 'POST',         // via protocol POST 
    url: '../../plugins/MySQL/ajax_action.php', 
    data: { action: 'opera_lookup' , holidex: '<?php echo($_SESSION['Holidex']); ?>' , conf_no: $("#room").val() },   // send $_POST string 
    dataType: 'json',        // encode with JSON 
    success: function (data) 
    {  

     var data0 = data[0]; 
     // 20 more variables here... 

    }, 
}); 
+0

の何*フォームをPHPに似た略記*を参照していますか? –

+0

js falsyの値を理解していることを確認してください。https://developer.mozilla.org/en-US/docs/Glossary/Falsy – Faust

+0

20個の変数を持つ代わりに、その値を配列またはオブジェクトに保存します。次に、配列やオブジェクトを簡単に反復処理し、各値をチェックします。ちなみに、 "空"とはどういう意味ですか? –

答えて

4

これは慣用的なJavaScriptのです:

a = a || 'N/A'; 

aaのすべてfalsy値は 'N/A' の値を取ること。複数の変数を処理するために

:ECMAScriptの6のdestructuring assignmentは、あなたが変数の配列にundefinedある変数にデフォルト値を割り当てることができます:

var a = "some value"; 
 
var b = ""; 
 
var c = "some other value"; 
 
var d; 
 

 
[a='N/A', b='N/A', c='N/A', d='N/A'] = [a, b, c, d]; 
 

 
console.log(a); // "some value" 
 
console.log(b); // "" 
 
console.log(c); // "some other value" 
 
console.log(d); // "N/A"

それともに分割代入を使用することができます

var a = "some value"; 
 
var b = ""; 
 
var c = "some other value"; 
 
var d; 
 

 
[a, b, c, d] = [a, b, c, d].map(x => x || 'N/A'); 
 

 
console.log(a); // "some value" 
 
console.log(b); // "N/A" 
 
console.log(c); // "some other value" 
 
console.log(d); // "N/A"
01のように、すべての偽値を処理するために map()との組み合わせ

あなたは別々の変数を維持する必要がない場合は、もちろん、単に直接データアレイにmapを適用することができます。

var data = ["some value", "", "some other value", undefined]; 
 

 
data = data.map(x => x || 'N/A'); 
 

 
console.log(data); // ["some value", "N/A", "some other value", "N/A"]

+0

私は 'map()'ソリューションが好きです。私が 'data []'と配列をループし、最初に変数(data0、data1など)を割り当てることなく各値をチェックする方法はありますか? – Armitage2k

+1

もちろん。 'data = data.map(x => x || 'N/A');' –

関連する問題