【发布时间】:2021-12-14 13:57:08
【问题描述】:
我正在尝试检查文件中的多个制表符分隔的单词并检查键是否在结构中(json): json 对象如下所示:
[
{
"Name" : "Cypress Upload 1",
"Description" : "Cypress upload descrition 1"
},
{
"Name" : "Cypress Upload 2",
"Description" : "Cypress upload descrition 2"
}
]
代码如下所示:
cy.readFile(uploadPathFile).then((jData) => {
cy.log(jData[0].Name);
const objLn = Object.keys(jData).length;
cy.get('@LASTDOWNLOADEDFILE').then((downFile) => {
cy.readFile(downFile as unknown as string).then((txt) => {
const lines = (txt as string).split('\t');
for (let o = 0; o < objLn; o++) {
for (let i = 0; i < lines.length; i++) {
cy.log(`Key ${lines[i]} ${jData[o].Name}`);
if (jData[o].hasOwnProperty(lines[i])) {
cy.log(`Found Key ${lines[i]}`);
}
}
}
});
});
});
第一个日志:在位置 0 处为我提供 Name 键的正确值
18 log Cypress Upload 1
第二个日志列出了制表符分隔文件中的所有名称:
...
21 log Key "ID" Cypress Upload 1
22 log Key "Name" Cypress Upload 1
23 log Key "Synonym 1" Cypress Upload 1
...
但它不显示找到的键,即使“名称”在那里并且 jData[0].Name 给出了一个值!为什么带有“if (jData[o].hasOwnProperty(lines[i])) {”的行永远不会正确。我也试过“if (jData[o][lines[i]]) {”
【问题讨论】:
标签: javascript json cypress