我想将包含数组的字符串转换为数组。
这是字符串:
var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']";
这是我想要的结果(不再是字符串):
var colorsArray = ['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3'];
双引号将始终在开头和结尾,所以我从另一个帖子中找到了这个代码,但我的字符串仍然是字符串......
colors.replace(/ ^"(。+(?=" $))" $ /,' $ 1');
我如何实现这一目标以及最佳做法是什么?
答案 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))