javascript - 如何使用循环Javascript中的变量检查对象中的属性
问题描述
我正在尝试访问对象属性,在循环中创建变量以从 excel 数据中获取单元格编号。
但问题是有些在 ws[cell] 中有 'v' 属性,如果没有,则会出现错误。错误类型现在是 TypeError,我认为是因为它没有'v'。我已经尝试过条件,但错误出现的原因与我猜的相同。我想解决这个问题。当没有'v'时它只是通过循环否则它打印
我知道我可以使用 xlsx.utils.sheet_to_json 让它更容易,但我想知道我是否可以在 JS 中解决这个问题..请提前帮忙!
这是我的代码。
const xlsx = require('xlsx');
let wb = xlsx.readFile('coupang_1.xlsx');
let sheetName = wb.SheetNames
let ws = wb.Sheets[sheetName[0]];
let refernceCell = ws[Object.keys(ws)[0]];
let range = refernceCell.substring(3,5);
let firstChr = range.charCodeAt(0);
let secondChr = range.charCodeAt(1);
let chr1 = '';
let chr2 = '';
let cellNum = firstObj.substring(5);
let limit = 90;
let cell = '';
for(let n=1; n<=cellNum; n++){
for(let i=64 ; i<=firstChr; i++){
chr1 = String.fromCharCode(i);
if(i==firstChr){
limit = secondChr;
}else{
limit = 90;
}
if(i==64){
chr1 = '';
}
for(let j=65; j<=limit; j++){
chr2 = String.fromCharCode(j);
cell = chr1+chr2+n;
let cellobj = ws[cell];
console.log(cell);
let b = 'v' in cellobj;
(b)?console.log('got it'):console.log('nope');
}
}
}
fraction of result
D2
got it
E2
C:\Users\q1\Documents\workspace\Practice\spread\sheet-to-json.js:57
let b = 'v' in cellobj;
^
TypeError: Cannot use 'in' operator to search for 'v' in undefined
at Object.<anonymous> (C:\Users\q1\Documents\workspace\Practice\spread\sheet-to-json.js:57:23)
单元格 d2 没有“v”属性。
解决方案
正如错误消息当前显示的那样,问题在于cellobj
,undefined
因此您无法将in
运算符应用于它。
我想真正的问题是cell = chr1+chr2+n
在线,你可能想console.log(cell)
检查真正拼写为单元格号码的内容。
祝你好运!
推荐阅读
- c - 我想对输入文件中的单词(az)进行排序并将该代码写入另一个文件。但是我被排序部分卡住了,因为它显示了一些错误
- ruby - 如何使用绑定对表达式中的多个属性执行算术运算?
- r - 如何将数据框中的 Inf 或 NA 值更改为 R 中的不同值
- r - 闪亮文档中的renderDiagrammeR美人鱼图大小
- cockroachdb - 当每个节点都出现故障时,如何恢复 cockroachdb 集群?
- c - 为什么 C 编译为汇编而不是二进制?
- javascript - 当两个异步函数在 Javascript 中修改同一个对象时会发生什么?
- sql-server - 尝试加快组合时速度较慢的 SQL 查询
- r - 导入多个csv,执行函数,在R中导出csv
- java - 一个项目共有多少个.java文件