如何解决将选定的数据表行转换为黄瓜中的整数
示例.功能
Scenario Outline: My test case
Given: My data is loaded
When : My data is ready
Then: My data is
|name| value |
|a | <value1> |
|b | <value2> |
|c | <value3> |
|d | <value4> |
Examples:
|value1| value2|value3| value4 |
|1 | 2 | 3 | text |
steps.js //使用 node.js
Then('My data is',function (dataTable) {
console.log(dataTable);
// console output
[['a','1'],['b','2'],['c','3'],['d','text']]
});
// expected output
[['a',1],2],3],'text']]
我不想根据名称进行硬编码,因为它可能会改变。有通用的解决方案吗?
解决方法
这将是一个特定于语言的问题。这可以通过使用对象映射器来解决。在 javascript 中,我认为有一个 #map
函数(但我不是 100%)。所以你会想要类似的东西。
虽然我的 JS 真的很生疏了
编辑:更好的解决方案是:
const ans = array2.map((array,index) => {
return array.map((element,innerIndex) => {
retVal = innerIndex%2==0 ? element + 1 : element * 2
return retVal
})
})
这将获取内部数组的每个元素,如果它是位置 0,2,4 等处的值,则将其加 1。如果它的位置为 1,3,5 等,则乘以 2
您可以根据自己的要求对其进行修改。
,您可以使用 isNaN(x)
检测值是否为数字。如果 isNaN(x)
函数返回 false
,您可以放心地忽略黄瓜数据表中的该值。如果 isNaN(x)
函数返回 true
,那么您可以使用 Number(x)
函数将字符串转换为数字。
isNaN
和 Number
函数是免费的。对于任何给定的输入,如果 isNaN
返回 true
,则将相同的输入传递给 Number
将返回 NaN
值。如果 isNaN
返回 false
,则将该输入传递给 Number
将成功将其转换为数字。
请记住,零在 JavaScript 中是一个假值,因此 if (Number("0"))
将被评估为 false
。
function parseDataTable(dataTable) {
return dataTable.map((row,index) => {
if (!isNaN(row[1])) {
row[1] = Number(row[1]);
}
return row;
});
}
并在您的步骤定义中使用它:
Then('My data is',function (dataTable) {
dataTable = parseDataTable(dataTable);
console.log(dataTable);
/*
Should output:
[
["a",1],["b",2],["c",3],["d","text"]
]
*/
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。