请问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 了。

推荐问题