将类似于字符串的数组转换为Javascript中的数组

时间:2019-03-02 13:26:54

标签: javascript arrays regex string

我想将看起来像字符串的数组转换为数组。

例如:

来自字符串

 var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free 
   Options']"

排列

['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options']

我已经用正则表达式尝试过了

str.match(/'[a-z]*'/gi).map((elm)=>{
    return elm.replace(/'/g,"")
    })

但这并不考虑两个字之间或多个字之间的空格。

请让我知道有效的解决方案。

4 个答案:

答案 0 :(得分:4)

将单引号替换为双引号,并用JSON.parse()转换为数组:

var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options ']"

var result = JSON.parse(str.replace(/'/g, '"'))

console.log(result)

答案 1 :(得分:1)

只需replace用单引号引起来的所有单引号,然后JSON.parse()用它引起来:

let str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options']";

str = str.replace(/'/g,'"') // replace all ' by "

let arr = JSON.parse(str) // now that it's valid JSON, parse it

console.log(arr)

答案 2 :(得分:0)

var str = "['Asian', 'Japanese', 'Vegetarian Friendly', 'Vegan Options', 'Gluten Free Options ']";
console.log(JSON.parse(str.replace(/'/g, '"')));

答案 3 :(得分:0)

str.replace(/[\[\]']+/g,'').split(', ')

尝试一下。 它适用于您发布的字符串。