Создать массив чисел со строки JavaScript

Помогите пожалуйста создать массив чисел со строки. Я пробовал, но результат не порадовал:

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";
var array1 = Array.from(str.split(','),Number);  
console.log(array1);


Ответы (4 шт):

Автор решения: Alexander Lonberg

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";
const array = str.replace(/^\[|\]$/g, '')
  .split(/[, ]+/)
  .map(Number.parseFloat)

console.log(array)

... или так:

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";

// Просто находим все числа
const array = str.match(/[\d\.]+/g).map(Number)
console.log(array)

→ Ссылка
Автор решения: yar85

Боги дали нам волшебный метод JSON.parse, пользуйся им:

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";
var array1 = JSON.parse(str);  
console.log(array1);

→ Ссылка
Автор решения: DiD

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";
/* но если данные из нестабильного источника, лучше проверить: */
if(!/^\[\d+(.\d+)?(e-?\d+)?(,\s*\d+(.\d+)?(e-?\d+)?)*\]$/i.test(str)){
   throw new SyntaxError('before eval: '+str);
}
var arr = eval(str);
console.log(arr);

→ Ссылка
Автор решения: Grundy

Альтернативным подходом может стать использование метода .match, который позволит собрать все числа в массив

Для этого можно определить регулярное выражение для чисел, например

/\d+(\.\d+)?/

В итоге можно получить следующий код:

var str = "[1.11, 0.0, 1.37, 1.8, 5.37, 0.16, 90.19]";
const array = str.match(/\d+(\.\d+)?/g)
  .map(Number)

console.log(array)

→ Ссылка