如何避免“未定义”值作为输出?

时间:2019-09-16 22:47:40

标签: javascript undefined

我正在研究以下fiddle 当在此代码中粘贴空列时,我得到一个未定义的值,我正在尝试将其转换为''(value ='') 举个简单的例子,列之间用制表符分隔 此附件图片中的dateaccount借方贷方: screenshot undefined values

我试图进行测试

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>';

3 个答案:

答案 0 :(得分:1)

如下所示分配所有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);
}

答案 1 :(得分:1)

只要变量为||,就可以尝试使用Logical OR运算符undefined添加值

item[j] = clipRows[i][j] || '';

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

答案 2 :(得分:0)

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

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);
  }

希望它对您有用!