1

给定以下json:

{
  "contract": [
    {"fieldName": "contractYear", "fieldValue": "2020"},
    ...
  ],
  "ruleSet": [
    ...
  ]
}

以及以下内容:

staticCompany.contract.forEach(index => {
  if (this.index.fieldName.getText() == index.fieldValue) {
    validationCount ++;
  }
});

我知道这是一个事实。操作员不会喜欢我正在尝试做的事情。有没有办法提取 fieldName 以便我可以使用它来点击同名的选择器?

我在 wdio v5 上的节点 12.13 中执行此操作。

4

1 回答 1

0

在您的forEach()声明中,this指的是窗口,因此您不想使用它。

此外, for each 仅传递数组的索引号。如果您想查看其中的值,forEach()您还需要包含该元素(好吧,从技术上讲,在您的 for each 中,index因为它被首先列出,所以它正在带回该元素,但如果您index在它不是时使用它,语法上它会变得混乱' t 实际上是索引)。

所有这些都是有效的选项:

forEach((element) => { ... } )
forEach((element, index) => { ... } )
forEach((element, index, array) => { ... } )

有关更多信息,请参阅MDN:Array.ForEach()

在下面的代码片段中,我在数组中添加了第二个 Object 元素,contract以向您展示如何访问该数组中的每个 Object 元素,并从中获取值。

const staticCompany = {
  "contract": [{
      "fieldName": "contractYear",
      "fieldValue": "2020"
    },
    {
      "fieldName": "contractYear",
      "fieldValue": "2021"
    },
  ],
  "ruleSet": []
}

staticCompany.contract.forEach((element, index) => {
  console.log({
    index: index,
    fieldName: element.fieldName,
    fieldValue: element.fieldValue
  })
});

于 2021-08-02T19:00:27.177 回答