0

I have the following input which I receive:

const myString = "['one', 'two']";

When I run the following command:

console.log(typeof myString);

I get string

This makes sense, as this is a string input. The input type is out of my control, I must receive this as a typeof string.

However, I would like to convert this string, into a formal array of strings.

For example:

const myArray = ['one', 'two'];

So, when I run:

console.log(typeof myArray);

I get object.

I have tried JSON.parse() and JSON.stringify but to no luck.

The basics of my question are how do I (in JavaScript) convert a string array, into an array of strings?

Matt Morgan
  • 4,900
  • 4
  • 21
  • 30
user3180997
  • 1,836
  • 3
  • 19
  • 31
  • An array is an object – Jarne Kompier May 30 '22 at 12:56
  • 3
    `JSON.parse()` would work if `myString` is a valid JSON string (double quotes around your elements, not single quotes - `'["one", "two"]'`) – Nick Parsons May 30 '22 at 12:57
  • maybe something interesting to read, [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model) – Jarne Kompier May 30 '22 at 12:57
  • 1
    Yea as @NickParsons said, you can replaceAll `'` with `"` if you don't control the input and then it just becomes this answered [question](https://stackoverflow.com/questions/41402834/convert-string-array-to-array-in-javascript) – Kushtra May 30 '22 at 12:59

3 Answers3

3

JSON.parse would work, if the JSON wasn't invalid. As mentioned in the comments, the string would have to be formatted as '["1", "2"]'.

If you do not have control over the formatting, you can parse it manually: if the strings don't contain quotes, you can use #replaceAll("'", '"').

If you have edge cases you need to cover, json5 may be able to help: JSON5.parse(str) once you have the script loaded via NPM or unpkg

LeoDog896
  • 3,472
  • 1
  • 15
  • 40
1

JSON only recognizes the usage of " ". To parse it you need to use double quotes instead of single quotes.

const myString = "['one', 'two']"; 
// change to
const myString = '["one", "two"]';

Heres an example:

// Not working
const Str = "['one', 'two']";

console.log(Str); // ['one', 'two']
console.log(typeof Str); // string

JSON.parse(Str); // SyntaxError: Unexpected token ' in JSON at position 1

// Working example:
const myString = '["one", "two"]';

console.log(myString); // ["one", "two"]
console.log(typeof myString); // string

const myArray = JSON.parse(myString);

console.log(myArray); // [ 'one', 'two' ]
console.log(typeof myArray); // object

In the case that you need to change ' to " just use replace.

Crispy
  • 382
  • 1
  • 11
0
const myArray = ['one', 'two'];
let str = myArray.toString();
console.log(str);//one,two
console.log(typeof str)//string
let srr = str.split(",");
console.log(srr);//[ 'one', 'two' ]
console.log(typeof srr)//object same as that of myArray

The above variable myArray is holding an array . In order to convert the array into string there is an inbuilt method in myArray.toString(). Now to convert array to string we will use split method as shown above.

neha-89
  • 11
  • 3