JavaScript преобразовать строку в объект массива - PullRequest
0 голосов
/ 07 августа 2020

Как преобразовать строку в объект массива.

У меня есть строка

let colors = "[красный, синий, зеленый]"

и я хотел бы преобразовать как

String [] colors = ["красный", "синий", "зеленый"]

Доступны ли какие-либо встроенные функции для этого преобразования?

Спасибо за глядя в него.

Ответы [ 3 ]

3 голосов
/ 07 августа 2020

Я бы последовал подходу @Jannes Carpentier, но чтобы предложить альтернативу, вы можете использовать slice для получения текстовой части строки (без скобок), а затем разделить ее на «,», чтобы получить массив текстовых элементов, а затем переназначить его исходной переменной.

let colors = "[red, blue, green]"

colors = colors.slice(1,-1).split(', ');

console.log(colors); // gives ["red", "blue", "green"]
2 голосов
/ 07 августа 2020

Сначала удалите скобки

Затем разделите на ", "

let colors = "[red, blue, green]"

colors = colors.replace(/([\[\]])/g, "");
colors = colors.split(", ");

console.log(colors);

Вместо замены всех [ ] вы также можете удалить первый и последний символы из строки

, а затем разделить на ", "

let colors = "[red, blue, green]"

colors = colors.substring(1, colors.length - 1);
colors = colors.split(", ");

console.log(colors);
1 голос
/ 07 августа 2020

Если ваши данные не отформатированы по какому-либо общепринятому стандарту, вы вряд ли найдете готовый анализатор данных. Если у вас есть контроль над входной строкой, было бы лучше отформатировать ее как строку json следующим образом: '["красный", "зеленый", "синий"]' Затем вы можете легко разделить ее с помощью JSON .parse ().

Два других ответа имеют очень удовлетворительные парсеры для ваших данных, однако я предпочитаю не рассчитывать на наличие пробелов в моем вводе. Парсер, такой как

function customParse(data) {
  return data
    .substring(1, data.length -1)
    .split(",", data)
    .map(trim);
}

console.log(customParse("[red, blue,green]"));

, будет работать независимо от пробелов.

...