【问题标题】:Convert string into an array of arrays in javascript在javascript中将字符串转换为数组数组
【发布时间】:2019-06-27 22:07:32
【问题描述】:

我有一个字符串如下:

my_string = "['page1',5],['page2',3],['page3',8]";

我想将其转换为以下内容:

my_array = [['page1',5],['page2',3],['page3',8]];

我知道有一个拆分函数,我必须在其中指定分隔符。当我这样做时:-

my_string.split(',');

我得到了以下结果:

 ["['page1'", "5]", "['page2'", "3]", "['page3'", "8]"]

【问题讨论】:

  • 向我们展示您已经尝试过的内容。
  • 你试过 JSON.parse(my_string) 吗?这将转换为数组
  • 这是一个无效的 JSON 字符串。您最好修复该字符串的创建位置和创建方式,而不是使用splitreplace 或一些正则表达式
  • @TheParam 这不是一个有效的 JSON 字符串。
  • @TheParam 输入字符串不是 JSON。 JSON 使用双引号 (") 将字符串括起来并编码单个对象。问题中发布的字符串包含多个用逗号分隔的对象。

标签: javascript


【解决方案1】:

您可以使用JSON.parse().replace() 使您的字符串成为可解析的字符串,如下所示:

const my_string = "['page1',5],['page2',3],['page3',8]",
stringified = '['+my_string.replace(/'/g, '"')+']';

console.log(JSON.parse(stringified));

或者您可以使用 Function 构造函数“松散”地解析您的 JSON:

const  my_string  = "['page1',5],['page2',3],['page3',8]";
arr = Function('return [' +  my_string + ']')(); 

console.log(arr);

【讨论】:

    【解决方案2】:

    您可以使用eval() 函数将字符串转换为数组。请参阅下面的代码。

    my_string = "['page1',5],['page2',3],['page3',8]";
    
    my_array = eval(`[${my_string}]`);
    
    console.log(my_array);

    但是,如果使用不当,使用eval() 函数会带来一系列缺点。在您的任何严肃代码中使用eval 之前,请通读this answer

    【讨论】:

    • 我绝不会推荐某人使用evil
    • @Maurice 我宁愿推荐驯服邪恶。
    • 虽然我不能投票,因为我的声誉低于 15,但您的解决方案完全符合我的要求。所以谢谢bhai。 @Vivek
    【解决方案3】:

    首先用 "],[" 分割字符串,得到一个如下所示的数组

    splitted_string = ["[page1,5", "[page2,3" , "[page3,8"];
    

    然后循环这个数组并去掉“[”字符,你得到一个像下面这样的数组

    splitted_string = ["page1,5", "page2,3" , "page3,8"];
    

    最后循环这个数组并用“,”分割每个元素。中提琴!你得到了你想要的东西

    splitted_string =  [['page1',5],['page2',3],['page3',8]];
    

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 1970-01-01
      • 2015-11-11
      • 2022-11-29
      • 1970-01-01
      • 2016-01-03
      • 2014-12-24
      • 2011-09-22
      相关资源
      最近更新 更多