如何使用循环Javascript中的变量检查对象中的属性
我试图访问对象属性,在一个循环生成变量中,从excel数据中获取单元格编号 但问题是ws[cell]中有一些具有“v”属性,如果没有,则会出现错误。错误类型现在是TypeError,我认为这是因为它没有“v”。我试过这种情况,但错误出现的原因和我想的一样。我想解决这个问题。当没有“v”时,它只是通过循环,否则它会打印 我知道我可以使用xlsx.utils.sheet_to_json使它更简单,但我想知道我是否可以用JS解决这个问题。。 请帮忙,谢谢 这是我的密码如何使用循环Javascript中的变量检查对象中的属性,javascript,Javascript,我试图访问对象属性,在一个循环生成变量中,从excel数据中获取单元格编号 但问题是ws[cell]中有一些具有“v”属性,如果没有,则会出现错误。错误类型现在是TypeError,我认为这是因为它没有“v”。我试过这种情况,但错误出现的原因和我想的一样。我想解决这个问题。当没有“v”时,它只是通过循环,否则它会打印 我知道我可以使用xlsx.utils.sheet_to_json使它更简单,但我想知道我是否可以用JS解决这个问题。。 请帮忙,谢谢 这是我的密码 const xlsx =
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');
}
}
}
constxlsx=require('xlsx');
设wb=xlsx.readFile('coupang_1.xlsx');
let sheetName=wb.SheetNames
设ws=wb.Sheets[sheetName[0]];
让referencecell=ws[Object.keys(ws)[0]];
设range=referencecell.substring(3,5);
设firstChr=range.charCodeAt(0);
设secondChr=range.charCodeAt(1);
设chr1='';
设chr2='';
设cellNum=firstObj.substring(5);
设极限=90;
设单元格=“”;
对于(设n=1;n,如错误消息当前所示,cellobj
是未定义的
,因此您无法对其应用in
运算符
我想真正的问题是在cell=chr1+chr2+n
行中,您可能想console.log(cell)
来检查真正的单元格编号
祝您好运!正如错误消息当前显示的,问题在于cellobj
是未定义的,因此您无法对其应用in
运算符
我想真正的问题是在cell=chr1+chr2+n
行中,您可能想console.log(cell)
来检查真正的单元格编号
祝你好运!我们可以从错误中看到,cellobj
未定义。因此,要解决此问题,请在cellobj
周围设置一个条件。如
for (let j = 65; j <= limit; j++) {
chr2 = String.fromCharCode(j);
cell = chr1 + chr2 + n;
let cellobj = ws[cell];
if (cellobj) {
let b = "v" in cellobj;
b ? console.log("got it") : console.log("nope");
}
}
for(设j=65;j,我们可以从错误中看到cellobj
未定义。因此,要解决此问题,您需要在cellobj
周围设置一个条件
for (let j = 65; j <= limit; j++) {
chr2 = String.fromCharCode(j);
cell = chr1 + chr2 + n;
let cellobj = ws[cell];
if (cellobj) {
let b = "v" in cellobj;
b ? console.log("got it") : console.log("nope");
}
}
for(让j=65;j如何改进该逻辑?我想检查单元格['v'],因为某些属性是空的,它是未定义的,因为数据中没有值。感谢您的意见我如何改进该逻辑?我想检查单元格['v']由于某些属性为空,因此未定义,因为数据中没有任何值。感谢您的意见,幸好它不起作用。我已经尝试过了。感谢您的意见if(cellobj.v)
也可以尝试此操作。如果您还没有尝试过,谢谢您尝试帮助我。我也尝试过:)这个答案怎么对你不起作用?这次到底是什么中断了?没有按我的预期工作,我无法访问带有变量nothing的对象中的属性。不幸的是,它不起作用。我已经尝试过了。感谢你的意见if(cellobj.v)
也可以试试。如果你还没有试过,谢谢你试着帮我。我也试过:)这个答案怎么对你不起作用?这次到底是什么原因造成的?没有按照我的预期工作,我无法访问对象中的属性,变量nothing对我不起作用