如何将从 json 文件中获取的值转换为 javascript 中的列表
How to convert a value fetched from json file to a list in javascript
我在 json 文件中有一个包含逗号分隔值的字符串,我想将其转换为列表以遍历 for 循环并单击每个 element.Please 帮我解决这个问题!
testdata.json :
{"optionsList":"China - English,France - English,South Korea - English,Japan - English,Brazil - English"}
代码:
var optionsLocator="//a[normalize-space()='%d']";
this.verifyOptionsList=async function(){
let options = await getTestData(testData, "optionsList");
var listOfOptions=JSON.parse(JSON.stringify(options));
logger.info("options list : ", listOfOptions);
for (let i = 0; i < listOfOptions.length; i++) {
var replaceOption = optionsLocator.replace("%d", listOfOptions[i]);
logger.info("Search Option :",replaceOption);
var optionLoc = element(by.xpath(replaceOption));
await clickElement(optionLoc);
}
}
输出:
options list : China - English,France - English,South Korea - English,Japan - English,Brazil - English
Search Option : '//a[normalize-space()='C']'
您可以尝试这样的操作:
JSON_OBJECT.optionsList.split(',').forEach( v =>
console.log(v)
);
我认为最简单的方法是按部分来做,你可以先用split
函数删除-
,然后它会变成一个数组,如:
[
"China",
"English,France",
"English,South Korea",
"English,Japan",
"English,Brazil",
"English"
]
然后遍历每个字符串并使用 split
您将能够分隔具有 ,
的字符串。结果类似于:
[
[
"China"
],
[
"English",
"France"
],
[
"English",
"South Korea"
],
[
"English",
"Japan"
],
[
"English",
"Brazil"
],
[
"English"
]
]
然后你可以flat
这个数组使用数组的函数flat
。
这里有一个工作示例:
const response = {
"optionsList": "China - English,France - English,South Korea - English,Japan - English,Brazil - English"
}
const options = response.optionsList
const splitByDash = options.split(' - ');
const splitByComa = splitByDash.map(str => str.split(","))
const result = splitByComa.flat();
console.log(result)
var optionsLocator="//a[normalize-space()='%d']";
this.verifyOptionsList=async function(){
let options = await getTestData(testData, "optionsList");
const splitByComa = options.split(',');
const listOfOptions = splitByComa.flat();
logger.info("options list : ", listOfOptions);
for (let i = 0; i < listOfOptions.length; i++) {
var replaceOption = optionsLocator.replace("%d", listOfOptions[i]);
logger.info("Search Option :",replaceOption);
var optionLoc = element(by.xpath(replaceOption));
await clickElement(optionLoc);
}
}
输出:
options list : [
'China - English',
'France - English',
'South Korea - English',
'Japan - English',
'Brazil - English'
]
我在 json 文件中有一个包含逗号分隔值的字符串,我想将其转换为列表以遍历 for 循环并单击每个 element.Please 帮我解决这个问题!
testdata.json :
{"optionsList":"China - English,France - English,South Korea - English,Japan - English,Brazil - English"}
代码:
var optionsLocator="//a[normalize-space()='%d']";
this.verifyOptionsList=async function(){
let options = await getTestData(testData, "optionsList");
var listOfOptions=JSON.parse(JSON.stringify(options));
logger.info("options list : ", listOfOptions);
for (let i = 0; i < listOfOptions.length; i++) {
var replaceOption = optionsLocator.replace("%d", listOfOptions[i]);
logger.info("Search Option :",replaceOption);
var optionLoc = element(by.xpath(replaceOption));
await clickElement(optionLoc);
}
}
输出:
options list : China - English,France - English,South Korea - English,Japan - English,Brazil - English
Search Option : '//a[normalize-space()='C']'
您可以尝试这样的操作:
JSON_OBJECT.optionsList.split(',').forEach( v =>
console.log(v)
);
我认为最简单的方法是按部分来做,你可以先用split
函数删除-
,然后它会变成一个数组,如:
[
"China",
"English,France",
"English,South Korea",
"English,Japan",
"English,Brazil",
"English"
]
然后遍历每个字符串并使用 split
您将能够分隔具有 ,
的字符串。结果类似于:
[
[
"China"
],
[
"English",
"France"
],
[
"English",
"South Korea"
],
[
"English",
"Japan"
],
[
"English",
"Brazil"
],
[
"English"
]
]
然后你可以flat
这个数组使用数组的函数flat
。
这里有一个工作示例:
const response = {
"optionsList": "China - English,France - English,South Korea - English,Japan - English,Brazil - English"
}
const options = response.optionsList
const splitByDash = options.split(' - ');
const splitByComa = splitByDash.map(str => str.split(","))
const result = splitByComa.flat();
console.log(result)
var optionsLocator="//a[normalize-space()='%d']";
this.verifyOptionsList=async function(){
let options = await getTestData(testData, "optionsList");
const splitByComa = options.split(',');
const listOfOptions = splitByComa.flat();
logger.info("options list : ", listOfOptions);
for (let i = 0; i < listOfOptions.length; i++) {
var replaceOption = optionsLocator.replace("%d", listOfOptions[i]);
logger.info("Search Option :",replaceOption);
var optionLoc = element(by.xpath(replaceOption));
await clickElement(optionLoc);
}
}
输出:
options list : [
'China - English',
'France - English',
'South Korea - English',
'Japan - English',
'Brazil - English'
]