数组外面包了引号,怎么去掉外面的引号,变成原来的数组

为什么要写这个,因为我去看某个流量大的博主,写的太简易,容易误人子弟,所以写个详细版。


let arr = '["qq","nn","555","456"]'
let b= JSON.parse(arr)
 

这是我的答案  

然后知名博主推荐 的是


let arr = '["qq","nn","555","456"]'
let b= eval(arr)
 

这个解决办法肯定是能达到想到的效果,

但对于数据而言,如果是数据字符串对象化,数组化,请用JSON.parse,如果字符串里有计算数据处理,请用eval

  var x = 10;
  var y = 20;
  var a = eval("x * y") + "<br>";
  var b = eval("2 + 2") + "<br>";
  var c = eval("x + 17") + "<br>";

  // 答案 
   200
   4
   27 

不信请看下面测试数据

var A = "{  a: 1 , b : 'hello' }";
var B = "{  'a': 1 , 'b' : 'hello' }";
var C = "{'a':1,'b':'hello'}";
var D = '{"a":1,"b":"hello"}';
var E = '{ "a" : 1 , "b" : "hello" }';
var F = '{ "a" : 1 ,\n  "b" : "hello" }';
var G = '{ "a" : 1 , "b" : window.location.href="https://www.baidu.com" }';

JSON.parse执行:

例:JSON.parse(A);

A、B、C、G都不可转,D、E、F都可以。

eval执行:

例:eval("("+A+")");

A到G都可以转,特别到G时,页面还跳转到百度了。

不建议使用eval

虽然从演示例子看,eval的能力是强过于JSON.parse的,它可解析不规范的JSON字符串,但是G的例子也可以看出,eval是不安全的,特别是数据是第三方给予时候,你根本不知道eval之后它会干什么。

所以结论就是,乖乖用JSON.parse解析JSON对象。

eval是强烈不建议用来解析JSON字符串,但是凡事无绝对,如果数据来源于你信任的并且格式也不大规范,那用它也不是不可以。

上一篇:eval()函数的使用


下一篇:KBQA学习记录-NER训练及验证