如何使用循环 Javascript 中的变量检查对象中的属性

https://img3.mukewang.com/64f992aa0001a52112520795.jpg

我正在尝试访问对象属性,在循环中创建变量以从 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”属性。


繁星淼淼
浏览 87回答 2
2回答

料青山看我应如是

正如我们从未定义的错误中看到的cellobj。因此,要解决此问题,您需要设置一个条件cellobj。喜欢for (let j = 65; j <= limit; j++) {&nbsp; chr2 = String.fromCharCode(j);&nbsp; cell = chr1 + chr2 + n;&nbsp; let cellobj = ws[cell];&nbsp; if (cellobj) {&nbsp; &nbsp; let b = "v" in cellobj;&nbsp; &nbsp; b ? console.log("got it") : console.log("nope");&nbsp; }}

qq_花开花谢_0

正如当前错误消息所示,问题在于 is&nbsp;cellobj,undefined因此您无法in对其应用运算符。我想真正的问题在于该cell = chr1+chr2+n行,您可能想console.log(cell)检查手机号码的真正拼写是什么。祝你好运!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript