【问题标题】:String to array, format字符串到数组,格式
【发布时间】:2020-11-16 01:40:07
【问题描述】:

我通过环境参数将一些参数从后面传递到我的前面。字符串没有问题,但我越来越疯狂地用数组来做。

  1. 初始数组格式 = ["one", "two", "three"]
  2. 当我把它传递到前面时,它返回"["one", "two", "three"]"
  3. 所以要解决这个问题,一点 js 技巧 (.replace(/"/g, "'")) 给我那个格式:"['one', 'two', 'three']"

现在,我想将它转换为一个基本的数组 javascript,如下所示:['one', 'two', 'three']

任何解决这个问题的想法(用更少的代码显然会很棒!)

【问题讨论】:

  • 您不能为此使用数组:环境变量是字符串。总是!您可以做的是在后端使用<ENV_VAR> = JSON.serialize(...)“序列化”数组,并在前端使用JSON.parse(<ENV_VAR>)“解析”它。
  • 你可以在这里参考这个答案:stackoverflow.com/questions/9244824/… 好像是同一个问题

标签: javascript


【解决方案1】:

您可以替换“"”,然后用“,”分割。

let str = "["one", "two", "three"]"
let ret = str.slice(1, -1).replace(/"/g, "").split(",").map(x => x.trim());
console.log(ret);

【讨论】:

    【解决方案2】:

    首先,通过将 HTML 代码传递给临时文本区域来取消转义 HTML 代码。 其次,使用JSON.parse()将未转义的String转换为JavaScript数组。

    escaped = "["one", "two", "three"]"
    
    const tmp = document.createElement("textarea");
    tmp.innerHTML = escaped;
    unescaped = tmp.value;
    array = JSON.parse(unescaped);
    document.write(array); // "one,two,three"

    【讨论】:

      【解决方案3】:

      您可以使用 Javascript eval() 函数将该字符串提取到数组中,如下所示。

      const input = "['one', 'two', 'three']";
      
      console.log(eval(input));

      【讨论】:

      • 你应该避免使用 eval,特别是如果你可以简单地从外部输入ENV_VAR = "<script> alert () </script>"
      【解决方案4】:

      将数据作为字符串从服务器以字符串形式发送到客户端

      var x = ["one", "two", "three"];
      let dataForExchange = x.tostring();
      

      现在当客户端收到的数据再次解析成数组时

      var xArray = dataForExchange.split(',');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多