首页 > 解决方案 > 如何使用循环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”属性。

标签: javascript

解决方案


正如错误消息当前显示的那样,问题在于cellobjundefined因此您无法将in运算符应用于它。

我想真正的问题是cell = chr1+chr2+n在线,你可能想console.log(cell)检查真正拼写为单元格号码的内容。

祝你好运!


推荐阅读