eslint 错误“guard-for-in”不清楚如何使用 for-in

bur*_*q24 5 javascript automation cucumber for-in-loop eslint

我正在使用 Cucumber js,我想填写应用程序中的一些字段,所以我使用 for-in 从 rowHash 中获取数据,但我收到错误消息“for 的正文- in 应该包含在 if 语句中,以从原型 guard-for-in 中过滤不需要的属性”我不确定我应该如何使用 for 中的 if 来编码我的 for-in。

这是我的代码:

this.fillRequiredfields = function(dataTable){
  var rows = dataTable.rowsHash();
  for (var row in rows) {
    var val = rows[row];

    if (row === 'firstname') {
      element(by.name('firstName')).sendKeys(val).isPresent();
    }
    if (row === 'lastname') {
      element(by.name('lastName')).sendKeys(val).isPresent();
    }
    if (row === 'emailaddress') {
      element(by.name('emailAddress')).sendKeys(val).isPresent();
    }
    if (row === 'displayname') {
      element(by.name('displayName')).sendKeys(val).isPresent();
    }
    if (row === 'password') {
      element(by.name('newPassword')).sendKeys(val).isPresent();
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试在 git 中进行提交时,我从 eslint 获得了“guard-for-in”。如果有人可以向我解释我应该如何在 for-in 中执行 if,那可能会很好。

希望您能够帮助我。

bur*_*q24 5

我已经解决了这个问题,就我而言,解决方案是:

代替

var val = rows[row];
Run Code Online (Sandbox Code Playgroud)

我将 if 与 hasOwnProperty() 添加在一起,如下所示:

if (rows.hasOwnProperty(row))
Run Code Online (Sandbox Code Playgroud)

所以代码是这样的:

for (var row in rows) {
  if (rows.hasOwnProperty(row)){

    if (row === 'firstname') {
      element(by.name('firstName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'lastname') {
      element(by.name('lastName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'emailaddress') {
      element(by.name('emailAddress')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'displayname') {
      element(by.name('displayName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'password') {
      element(by.name('newPassword')).sendKeys(rows[row]).isPresent();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

希望可以帮助别人。


小智 5

在一些罕见的情况下

if (rows.hasOwnProperty(row))
Run Code Online (Sandbox Code Playgroud)

可能会触发不良影响(例如,如果这是一个函数 hasOwnProperty())。所以这就是为什么建议的方法是

Object.prototype.hasOwnProperty.call(rows, row)
Run Code Online (Sandbox Code Playgroud)