【问题标题】:How to convert a value fetched from json file to a list in javascript如何将从json文件中获取的值转换为javascript中的列表
【发布时间】:2021-06-23 07:13:28
【问题描述】:

我在 json 文件中有一个带有逗号分隔值的字符串,并且想将其转换为列表以遍历 for 循环并单击每个元素。请帮助我!

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']'

【问题讨论】:

    标签: javascript node.js list selenium protractor


    【解决方案1】:

    你可以试试这样的:

    JSON_OBJECT.optionsList.split(',').forEach( v => 
    console.log(v)
    );
    

    【讨论】:

      【解决方案2】:

      我认为最简单的方法是分部分进行,您可以先使用split 函数删除-,然后它会生成如下数组:

      [
        "China",
        "English,France",
        "English,South Korea",
        "English,Japan",
        "English,Brazil",
        "English"
      ]
      

      然后遍历每个字符串并使用split,您将能够分离具有, 的字符串。导致类似:

      [
        [
          "China"
        ],
        [
          "English",
          "France"
        ],
        [
          "English",
          "South Korea"
        ],
        [
          "English",
          "Japan"
        ],
        [
          "English",
          "Brazil"
        ],
        [
          "English"
        ]
      ]
      

      那么你可以使用数组的函数flatflat这个数组。

      这里有一个工作示例:

      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)

      【讨论】:

        【解决方案3】:
        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'
        ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多