如何将字符串中的数组转换为Javascript上的数组?

时间:2017-05-21 12:05:19

标签: javascript arrays string

我想将包含数组的字符串转换为数组。

这是字符串:

var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']";

这是我想要的结果(不再是字符串):

var colorsArray = ['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3'];

双引号将始终在开头和结尾,所以我从另一个帖子中找到了这个代码,但我的字符串仍然是字符串......

  

colors.replace(/ ^"(。+(?=" $))" $ /,' $ 1');

我如何实现这一目标以及最佳做法是什么?

4 个答案:

答案 0 :(得分:1)

一种方法是使用String.match

colors.match(/(#[a-f0-9]{6})/g)

将返回颜色数组

答案 1 :(得分:1)

使用正则表达式

var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']";

console.log(colors.match(/#....../g))
console.log(colors.match(/#[a-f0-9]{6}/g))

答案 2 :(得分:0)

将双qoutes替换为double并使用JSON.parse

var colorsArray = JSON.parse(colors.replace(/'/g,'"'))

答案 3 :(得分:0)

如果您确信输入是安全的,则可以使用eval()

var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']",
  colorsArray = eval(colors);

console.log('colorsArray is array = ', Array.isArray(colorsArray))