将其中包含数字数组的字符串转换为实际值

时间:2019-03-16 23:31:00

标签: javascript arrays json string

我正在进行编码分配,部分工作需要从用户那里输入文本,其格式应与此类似:

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]"];

如何将数组中的字符串转换回实际的数组?

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)

在拆分字符串上使用mapJSON.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))

那应该返回所有数组的一个数组。