#javascript #arrays #json #string
#javascript #массивы #json #строка
Вопрос:
Я работаю над назначением кодирования, и часть его требует ввода текста от пользователя, который был бы отформатирован аналогично этому:
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]"];
Как мне преобразовать эти строки в массив обратно в фактические массивы?
Ответ №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:
Замените n
s запятыми и окружите входные данные [
и ]
, чтобы у вас был JSON, представляющий один массив, который содержит 3 подмассива:
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);
Ответ №3:
Вы находитесь на расстоянии одной пары квадратных скобок от создания вашего value
анализируемого JSON.
try {
let array = JSON.parse('[' value ']');
} catch(e) {}
Try / catch хорош в случае, если вы не можете быть уверены, что входные данные будут в точном формате, который вы ожидаете.
Ответ №4:
Как только у вас будет следующий код:
value = ["[1, 2, 3, 4]", "[9, 8, 7, 6]", "[1, 2, 3, 4]"];
Вы можете сделать что-то вроде этого, чтобы получить фактические массивы:
value.map(e => e.slice(1, -1).split(',').map(Number))
Это должно вернуть массив всех ваших массивов.