Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组字符串解析为数组_Javascript - Fatal编程技术网

Javascript 如何将数组字符串解析为数组

Javascript 如何将数组字符串解析为数组,javascript,Javascript,我需要将字符串转换为数组。唯一需要注意的是,我的字符串中可以有特殊字符,如#。这是一个输入示例“[1,2,3,#,5]”。我尝试使用了JSON.parse,如果没有特殊字符,它就可以工作,例如,“[1,2,3,4]”,但是对于像#这样的特殊字符,我希望保留数组中的字符。所以“[1,2,3,#,5]”应该被解析为[1,2,3,#,5],但会引发异常JSON.parse提供了一个用于特殊处理的REVERER回调函数,但似乎是一个过度的用途,我想这将有点复杂。非常感谢您的帮助 编辑:Reviver回调

我需要将字符串转换为数组。唯一需要注意的是,我的字符串中可以有特殊字符,如
#
。这是一个输入示例
“[1,2,3,#,5]”
。我尝试使用了
JSON.parse
,如果没有特殊字符,它就可以工作,例如,
“[1,2,3,4]”
,但是对于像
#
这样的特殊字符,我希望保留数组中的字符。所以
“[1,2,3,#,5]”
应该被解析为
[1,2,3,#,5]
,但会引发异常
JSON.parse
提供了一个用于特殊处理的REVERER回调函数,但似乎是一个过度的用途,我想这将有点复杂。非常感谢您的帮助

编辑:Reviver回调不会有帮助,因为它用于转换解析的对象,而不是帮助解析对象。因此,这也被排除在可能的解决方案之外,您可以使用:

const str=“[1,2,3,#,5]”;
const arr=str.replace(/(^\[\]$)/g',)//删除[]括号
.split(“,”)//用逗号拆分
.map(x=>isNaN(x)?x:+x);//转换数字

console.log(arr);//[1,2,3,“#”,5]
这里它试图将其转换为数字数组,因此任何其他字符都会抛出一个错误,包括字母表和特殊字符

试着用这个代替-

var output=“[1,2,3,#,5]”。替换(/[\[\]']+/g')。拆分(“,”);
控制台日志(输出)//[“1”、“2”、“3”、“#”、“5”]