【问题标题】:how to replace undefined with a empty string如何用空字符串替换未定义
【发布时间】:2014-09-16 18:46:53
【问题描述】:

我正在使用 jsPdf。当字段留空时,pdf 上会打印“未定义”。我想用一个空字符串替换它。我正在尝试使用 if 语句,但我没有得到它。

 doc.text(30, 190, "Budget : $");
    if ($scope.currentItem.JobOriginalBudget == "undefined") {

        doc.text(50, 190, " ");
    }
    else {
        var y = '' + $scope.currentItem.JobOriginalBudget;
        doc.text(50, 190, y);
    };

【问题讨论】:

  • 只做var value = $scope.currentItem.JobOriginalBudget || " "; doc.text(50, 190, value+'') 检查可能是undefined, "", null, NaN, false, 0 等的虚假值。或者使用angular.isUndefined($scope.currentItem.JobOriginalBudget) 进行特定检查,甚至使用angular.isDefined 进行与以前相反的检查
  • 或扩展 @PSL 显示的内容,创建一个简单的辅助函数,因为 PDF 可能有很多此类操作,并且可以编写 getVal(var) 比进行大量比较容易得多
  • var y = '' + ($scope.currentItem.JobOriginalBudget || '');

标签: javascript angularjs jspdf


【解决方案1】:

根据this answer,我相信你想要的是

doc.text(50, 190, $scope.currentItem.JobOriginalBudget || " ")

【讨论】:

    【解决方案2】:

    var ab = {
    firstName : undefined,
    lastName : undefined
    }
    
    let newJSON = JSON.stringify(ab, function (key, value) {return (value === undefined) ? "" : value});
    
    console.log(JSON.parse(newJSON))
    <p>
       <b>Before:</b>
       let ab = {
       firstName : undefined,
       lastName : "undefined"
       }
       <br/><br/>
       <b>After:</b>
       View Console
    </p>

    【讨论】:

      【解决方案3】:

      undefined is a primitive value。您不是与标识符 undefined 进行比较,而是与 9 个字符的 字符串undefined”进行比较。

      只需删除引号:

      if ($scope.currentItem.JobOriginalBudget == undefined)
      

      或者与typeof 结果比较,一个字符串:

      if (typeof $scope.currentItem.JobOriginalBudget == "undefined")
      

      【讨论】:

        【解决方案4】:

        如果 item 是一个 Object 使用,这个函数:

        replaceUndefinied(item) {
           var str =  JSON.stringify(item, function (key, value) {return (value === undefined) ? "" : value});
           return JSON.parse(str);
        }
        

        【讨论】:

          【解决方案5】:

          只需删除“== 'undefined'”

          if (!$scope.currentItem.JobOriginalBudget) {
              doc.text(50, 190, " ");
          }
          

          【讨论】:

            【解决方案6】:

            就我而言

            doc.text(50, 190, $scope.currentItem.JobOriginalBudget??" ")
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-02-18
              • 2016-04-21
              • 1970-01-01
              • 1970-01-01
              • 2016-05-27
              • 1970-01-01
              • 1970-01-01
              • 2019-05-16
              相关资源
              最近更新 更多