【问题标题】:JS - if var is empty, set value shorthand [duplicate]JS - 如果 var 为空,则设置值简写[重复]
【发布时间】:2017-06-08 17:49:14
【问题描述】:

我有大约 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...

    },
});

【问题讨论】:

  • 你指的是什么类似于PHP的简写形式
  • 确保你理解 js falsy 值:developer.mozilla.org/en-US/docs/Glossary/Falsy
  • 不要有 20 个变量,而是将它们的值保存在数组或对象中。然后,您可以轻松地遍历数组或对象,并对每个值进行检查。顺便问一下,“空”到底是什么意思?
  • 您在块语句 {} 中有 var 的事实表明您的代码有很多问题 - 您需要了解很多关于 javascript 的知识,它正在提升变量声明
  • 你的 PHP “速记”可以重写为 $is_admin = $user['permissions'] == 'admin';

标签: javascript string


【解决方案1】:

这是惯用的 JavaScript:

a = a || 'N/A';

请注意,对于 a 的所有 falsy 值,a 将采用值“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"]

【讨论】:

  • 我喜欢map() 解决方案,看起来更干净。有什么方法可以让我循环遍历data[] 和数组并检查每个值,而不必先为其分配变量(例如 data0、data1 等)?
  • 当然。 data = data.map(x =&gt; x || 'N/A');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2013-03-23
  • 1970-01-01
相关资源
最近更新 更多