我正在进行编码分配,部分工作需要从用户那里输入文本,其格式应与此类似:
value = "[1, 2, 3, 4]\n[9, 8, 7, 6]\n[1, 2, 3, 4]";
使用.split会导致值为:
value = ["[1, 2, 3, 4]", "[9, 8, 7, 6]", "[1, 2, 3, 4]"];
如何将数组中的字符串转换回实际的数组?
答案 0 :(得分:1)
将\n
替换为逗号,并用[
和]
包围输入,以使您拥有一个表示一个包含3个子数组的数组的JSON:
const value = "[1, 2, 3, 4]\n[9, 8, 7, 6]\n[1, 2, 3, 4]";
const json = '[' + value.replace(/\n/g, ',') + ']';
const arr = JSON.parse(json);
console.log(arr);
答案 1 :(得分:1)
在拆分字符串上使用map
和JSON.parse
:
var value = "[1, 2, 3, 4]\n[9, 8, 7, 6]\n[1, 2, 3, 4]";
value = value.split("\n");
var arrays = value.map(a => JSON.parse(a));
console.log(arrays);
答案 2 :(得分:0)
距离制作value
可解析的JSON仅需一对方括号。
try {
let array = JSON.parse('['+value+']');
} catch(e) {}
如果您不确定输入内容是否符合您的期望格式,则尝试/捕获功能会很好。
答案 3 :(得分:0)
一旦您具有以下代码:
value = ["[1, 2, 3, 4]", "[9, 8, 7, 6]", "[1, 2, 3, 4]"];
您可以执行以下操作来获取实际的数组:
value.map(e => e.slice(1, -1).split(',').map(Number))
那应该返回所有数组的一个数组。