如何避免 "undefined" 值作为输出?

How to avoid "undefined" value as an output?

我正在研究以下内容fiddle 在此代码中粘贴一个空列时,我得到一个未定义的值,我试图将其转换为 '' (value='') 作为一个简单的例子,列由制表符分隔 此附加图片中的 dateaccount 借方贷方:

我试过包含一个测试

if (typeof myVar !== 'undefined') ...

运气不好 如何才能做到这一点? JS 看起来如下:

  $(document).on('paste', 'textarea#excelPasteBox', function(e) {
                  e.preventDefault();
                  var cb;
                  var clipText = '';
                  if (window.clipboardData && window.clipboardData.getData) {
                    cb = window.clipboardData;
                    clipText = cb.getData('Text');
                  } else if (e.clipboardData && e.clipboardData.getData) {
                    cb = e.clipboardData;
                    clipText = cb.getData('text/plain');
                  } else {
                    cb = e.originalEvent.clipboardData;
                    clipText = cb.getData('text/plain');
                  }
                  var clipRows = clipText.split('\n');
                  for (i = 0; i < clipRows.length; i++) {
                    clipRows[i] = clipRows[i].split('\t');
                  }
                  var jsonObj = [];
                  for (i = 0; i < clipRows.length - 1; i++) {
                    var item = {};
                    for (j = 0; j < clipRows[i].length; j++) {
                      if (clipRows[i][j] != '\r') {
                        if (clipRows[i][j].length !== 0) {
                          item[j] = clipRows[i][j];
                        }
                      }
                    }
                    jsonObj.push(item);
                  }
                  $('textarea#jsonDataDump').val('');
                  var tablePlaceHolder = document.getElementById('output');
                  tablePlaceHolder.innerHTML = '';
                  var table = document.createElement('table');
                  table.id = 'excelDataTable';
                  table.className = 'table';
                  var header = table.createTHead();
                  var row = header.insertRow(0);
                  var keys = [];
                  for (var i = 0; i < jsonObj.length; i++) {
                    var obj = jsonObj[i];
                    for (var j in obj) {
                      if ($.inArray(j, keys) == -1) {
                        keys.push(j);
                      }
                    }
                  }
                  keys.forEach(function(value, index) {
                    var headerCell = document.createElement('th');
                    headerCell.innerHTML = '<div>' + value + '<\/div>';

您可以轻松地将未定义的值替换为空字符串或您想要的任何内容。基本上你可以添加以下行

if( item[j]===undefined) item[j]="no data"; // 没有数据或任何你想要的

  var jsonObj = [];
  for (i = 0; i < clipRows.length - 1; i++) {
    var item = {};
    for (j = 0; j < clipRows[i].length; j++) {
      if (clipRows[i][j] != '\r') {
        if (clipRows[i][j].length !== 0) {
          item[j] = clipRows[i][j];
        }
      }
      if( item[j]===undefined)  item[j]="no data";
    }
    jsonObj.push(item);
  }

希望对你有用!

将所有 if 逻辑替换为如下所示的赋值。

var jsonObj = [];
for (i = 0; i < clipRows.length - 1; i++) {
  var item = {};
  for (j = 0; j < clipRows[i].length; j++) {
    item[j] = clipRows[i][j]
  }
  jsonObj.push(item);
}

您可以尝试使用逻辑或运算符 || 在变量为 undefined

时添加值
item[j] = clipRows[i][j] || '';

let tmp;
console.log(tmp);
console.log(tmp || "");
console.log(tmp || "--na--");