Why cant i convert this arr
let stringarr = "[2022年07月12日, 2022年08月09日]"
to this arr
let arr = JSON.parse(stringarr) ---> error
Unexpected token / in JSON at position 5
4 Answers 4
It's not valid JSON, since the array elements aren't quoted.
If the array elements are all dates formatted like that, you could use a regular expression to extract them.
let stringarr = "[2022年07月12日, 2022年08月09日]"
let dates = stringarr.match(/\d{4}\/\d{2}\/\d{2}/g);
console.log(dates);
Comments
what can i do then to convert it to an array
There are several ways to do that, if the format of the string stays like this. Here's an idea.
console.log(`[2022年07月12日, 2022年08月09日]`
.slice(1, -1)
.split(`, `));
Or edit to create a valid JSON string:
const dateArray = JSON.parse(
`[2022年07月12日, 2022年08月09日]`
.replace(/\[/, `["`)
.replace(/\]/, `"]`)
.replace(/, /g, `", "`));
console.log(dateArray);
Or indeed use the match method @Barmar supplied.
Comments
const regexp = /\d+\/\d+\/\d+/g;
const stringarr = "[2022年07月12日, 2022年08月09日]";
const arr = [...stringarr.matchAll(regexp)];
console.log(arr)
Comments
It's to much simple 😄.
As your input is a valid array in string format. So, remove [ ] brackets and split with comma (,). Then it automatically generates an array.
let stringarr = "[2022年07月12日, 2022年08月09日]";
let arr = stringarr.replace(/(\[|\])/g, '').split(',');
Output:
['2022/07/12', ' 2022年08月09日']
let stringarr = "['2022/07/12', '2022/08/09']" let arr = JSON.parse(stringarr)error