如何避免 "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--");
我正在研究以下内容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--");