Как конвертировать массив строк для плавания в Javascript

1

У меня есть этот массив, и он отформатирован как строка:

['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 элементов, поскольку мои разделители - запятые.

Любые идеи о том, как я могу преобразовать этот массив без замены точек?

  • 0
    Запятая - это разделитель, используемый в диаграмме Js. Поэтому я должен сохранить их, не заменяя точки.
  • 1
    Ну, ответы ниже такие же, как и здесь , вам просто нужно лучше искать ответы, а не задавать повторяющиеся вопросы.
Показать ещё 6 комментариев
Теги:
arrays
chart.js
charts

7 ответов

0
Лучший ответ

Предполагая, что у вас есть массив в строковом формате, вы можете использовать следующее регулярное выражение для сопоставления всех десятичных знаков, а затем использовать .map(Number)

const str = "['6.35', '2.72', '11.79', '183.25']",
      array = str.match(/\d+(?:\.\d+)?/g).map(Number)

console.log(array)
0
var arr = ["6,35,2,72,11,79,183,25"]
var result=arr.map(Number);
result[]
typeof(result[])
0

var num = ['6.35', '2.72', '11.79', '183.25'].map(num => Number(num));

console.log(num);

Количество() МДН

  • 0
    Ребята, это дает мне следующую ошибку: TypeError: window.column_b.map не является функцией. (В 'window.column_b.map (i => Number (i))' 'window.column_b.map' не определено). PS: "window.column_b", потому что это глобальная переменная, объявленная вне функции.
0

\d соответствует только цифрам, это сокращение от [0-9]. Например, в 6.35 \d+ соответствует 6 а затем 35 отдельности, и точка игнорируется. В результате вы получите массив, содержащий эти совпадения.

Как предлагается в других ответах, использование соответствия в вашем случае является излишним, и вы можете использовать:

array.map(Number) 
0

Вы можете просто сопоставить номера.

var array = ['6.35', '2.72', '11.79', '183.25'],
    numbers = array.map(Number);

console.log(numbers);
  • 0
    Если я использую только этот метод, то Chart Js (где используется массив) не отображает диаграмму. Кроме того, сам этот метод по какой-то причине дает сбой, поэтому я даже не могу распечатать результат.
  • 0
    в JavaScript нет необходимости преобразовывать числовой контент в числовые литералы, потому что именно поэтому мы любим JavaScript - он живой! Если мы служим им хорошо, id делает это для нас.
Показать ещё 2 комментария
0

Разобрать значения для плавания:

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)
  • 0
    Спасибо Исламу за потраченное время на его решение. Я проверил решение, представленное Adiga, и оно сработало, поэтому я отметил как решенное.
  • 0
    @JulioSouto мое удовольствие!
0

Сопоставьте массив с функцией Number, он будет обрабатывать преобразование:

console.log(['6.35', '2.72', '11.79', '183.25'].map(Number));

Если вы хотите запятую в ваших числах, то вы должны придерживаться строкового представления.

Посмотрите этот ТАК ответ о похожей проблеме с ChartJS.

  • 0
    Как указано выше, если я использую только этот метод, то Chart Js (где используется массив) не отображает диаграмму. Кроме того, сам этот метод по какой-то причине дает сбой, поэтому я даже не могу распечатать результат.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню