请问js怎么将用引号包裹的数组(即字符串形式)转换为数组?

具体如下:
字符串类型
‘[{workOrderIds:1521,userId:[1344,1331]},{workOrderIds:1522,userId:[1334,1231]}]’
转为为数组:
[{workOrderIds:1521,userId:[1344,1331]},{workOrderIds:1522,userId:[1334,1231]}]

不使用eval()方法哦

阅读 6.9k
1 个回答

由于不是标准的 JSON,所以不能使用 JSON.parse()

可以构造一个 Function 对象,使其返回该值:

let str = '[{workOrderIds:1521,userId:[1344,1331]},{workOrderIds:1522,userId:[1334,1231]}]';
let func = new Function('return (' + str + ');');
let arr = func();
console.log(arr);

补充:new Function(string) 本质上还是 eval,只不过作用域不一样而已。如果只是要求代码里不显式调用 eval,那么上面的写法已经满足了;如果连底层都不能使用,那只能徒手写 parser 了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题