Как преобразовать «['2022-03-24', '2022-03-25']» в массив javascript

Я хочу преобразовать "['2022-03-24', '2022-03-25']" в данные массива javascript из element.dataset

сделал const dateRange = JSON.stringify("['2022-03-24', '2022-03-25']")JSON.parse(dateRange) возвращает ['2022-03-24', '2022-03-25'], который является строкой, а не массивом JavaScript.

Я хочу заполнить диапазон дат flatpickr объектом из моей базы данных, поэтому я передаю HTML-элемент даты через атрибут данных <input type = "date" class = "date-range" data-date = "{{date_range}}" />

сделайте исходную строку допустимой JSON (используйте двойные кавычки), а затем просто проанализируйте ее. JSON.parse('["2022-03-24", "2022-03-25"]')

pilchard 16.03.2022 22:36

Нет; использование синтаксического анализа непосредственно на нем вызывает эту ошибку VM24785: 1 Uncaught SyntaxError: Unexpected token 'в JSON в позиции 1 в JSON.parse (<анонимный>) в (индекс): 531:30 в NodeList.forEach (<анонимный>) в flatpickrDate ((индекс):530:19) в (индекс):541:5

Cynthia Onyilimba 16.03.2022 22:43

Как я уже сказал, сначала убедитесь, что он действителен (двойные кавычки, а не одиночные вокруг элементов массива). См. также: Кодирование JSON со строками в атрибутах данных html

pilchard 16.03.2022 22:44

также: Использование JSON в шаблоне django

pilchard 16.03.2022 22:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте это, это оставит вас с массивом строк дат, попробуйте проанализировать их на даты сейчас (если вам нужно).

someString.replace(/[',\]\[]/g, '').split(' ')

Страшное регулярное выражение на помощь.

Cynthia Onyilimba 16.03.2022 22:33

Вы можете использовать объект Function() для создания экземпляра функции, которая будет возвращать массив. Вторая строка ниже создает анонимную функцию, которая затем немедленно вызывается через ().

const arrString = "['2022-03-24', '2022-03-25']";
const arr = (new Function(`return ${arrString}`))();
console.info( arr );

ДЕМО

const arrString = "['2022-03-24', '2022-03-25']";
const arr = (new Function(`return ${arrString}`))();
console.info( arr );

Другие вопросы по теме