Разделить строку csv и преобразовать числовые значения (Typescript, Javascript)
Я пытаюсь преобразовать строку файла CSV в массив, а затем преобразовать числовые значения из строки.
Это моя строка файла csv:
const row = "TEXT,2020-06-04 06:16:34.479 UTC,179,0.629323";
И это мой массив целей (последние два числовых значения без строкового формата):
["TEXT","2020-06-04 06:16:34.479 UTC",179,0.629323]
Я пробовал в трех разных режимах, но не получил желаемого результата.
Попробуйте 1:
const array1 = row.split(",");
Результат:
["TEXT","2020-06-04 06:16:34.479 UTC","179","0.629323"]
Попробуйте 2:
const array2 = row.split(",");
for (let element in array3){
array3[element] = +array3[element];
}
Результат:
[null,null,179,0.629323]
Попробуйте 3:
const array3 = row.split(",").map(x=>+x);
Результат:
[null,null,179,0.629323]
Кто-нибудь может мне помочь?
Благодарность!
2 ответа
Решение
С помощью isNaN()
const row = "TEXT,2020-06-04 06:16:34.479 UTC,179,0.629323";
const array = row.split(",").map(i => isNaN(i) ? i : +i)
console.log(array)
Функция inNan в JS проверяет, можно ли преобразовать число в число.
Попробуйте следующий метод
const row = "TEXT,2020-06-04 06:16:34.479 UTC,179,0.629323";
const array1 = row.split(",");
const newArray = array1.map(value => toNumber(value))
console.log("newArray", newArray)
function toNumber(value) {
if(isNaN(value) || value === "")
return value
else
if(value.indexOf(".") === -1)
return parseInt(value)
else
return parseFloat(value)
}
Еще один способ сделать это, умножив значение на 1.
let array = row.split(",").map(value => isNaN(value) ? value : value * 1);