JS - 如果var为空,则设置值缩写

时间:2017-01-24 03:31:56

标签: javascript string

我有大约20个变量,我想检查它们是否为空。而不是写出丑陋的代码"以个别if (!a) { var a = 'N/A' }语句的形式,我想知道是否有类似于PHP的某种形式的速记?

我想检查变量是否为空,如果是,请将其值设置为' N / A'。

编辑: 关于我对PHP简写的意思,我正在寻找类似的东西。

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

根据建议将变量保存在数组中,请参阅下面的代码。我通过AJAX从MySQL数据库中提取数据,并将其作为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...

    },
});

1 个答案:

答案 0 :(得分:4)

这是惯用的JavaScript:

a = a || 'N/A';

请注意,a会为a的所有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"

或者你可以结合map()使用解构赋值来处理所有虚假值,如第一个例子所示:

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"

如果您不需要维护单独的变量,您当然也可以直接将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"]