如何将从 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'
]