我有大约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...
},
});
答案 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"]