У меня есть этот массив, и он отформатирован как строка:
['6.35', '2.72', '11.79', '183.25']
Проблема в том, что когда я конвертирую его в числа (используя - без двойных кавычек) array.match(/\d+/g).map(Number) || 0;
array.match(/\d+/g).map(Number) || 0;
это меняет точки, используемые для десятичных знаков, на запятые. Затем я получаю этот новый массив:
6,35,2,72,11,79,183,25
Итак, вместо 4 элементов в массиве, теперь у меня есть 8 элементов, поскольку мои разделители - запятые.
Любые идеи о том, как я могу преобразовать этот массив без замены точек?
Предполагая, что у вас есть массив в строковом формате, вы можете использовать следующее регулярное выражение для сопоставления всех десятичных знаков, а затем использовать .map(Number)
const str = "['6.35', '2.72', '11.79', '183.25']",
array = str.match(/\d+(?:\.\d+)?/g).map(Number)
console.log(array)
var arr = ["6,35,2,72,11,79,183,25"]
var result=arr.map(Number);
result[]
typeof(result[])
var num = ['6.35', '2.72', '11.79', '183.25'].map(num => Number(num));
console.log(num);
\d
соответствует только цифрам, это сокращение от [0-9]
. Например, в 6.35
\d+
соответствует 6
а затем 35
отдельности, и точка игнорируется. В результате вы получите массив, содержащий эти совпадения.
Как предлагается в других ответах, использование соответствия в вашем случае является излишним, и вы можете использовать:
array.map(Number)
Вы можете просто сопоставить номера.
var array = ['6.35', '2.72', '11.79', '183.25'],
numbers = array.map(Number);
console.log(numbers);
Разобрать значения для плавания:
console.log(['6.35', '2.72', '11.79', '183.25'].map(i => parseFloat(i)));
Если по какой-то причине .map()
не работает, просто используйте цикл:
var array = ['6.35', '2.72', '11.79', '183.25']
var x = 0;
var len = array.length
while(x < len){
array[x] = parseFloat(array[x]);
x++
}
console.log(array)
Сопоставьте массив с функцией Number
, он будет обрабатывать преобразование:
console.log(['6.35', '2.72', '11.79', '183.25'].map(Number));
Если вы хотите запятую в ваших числах, то вы должны придерживаться строкового представления.
Посмотрите этот ТАК ответ о похожей проблеме с ChartJS.