Как преобразовать строку, представляющую десятичное число, используя parseInt вместо parseFloat? - PullRequest
0 голосов
/ 28 июня 2018

Для заданной строки, представляющей число, используйте parseInt для преобразования строки в число. Я написал рабочую функцию, но не учитывал десятичные числа. Есть ли способ конвертировать десятичные числа с помощью parseInt? Это насколько я пытался учесть десятичные дроби. Проблема в том, что NaN возвращается. Я не могу придумать решение для реализации, которое фильтрует NaN от результатов. Конечная цель - сравнить две строки. Мое решение должно использовать parseInt.

function convertStr(str1, str2) {
let num1 = str1.split('')
let num2 = str2.split('');
num1 = num1.map(str => parseInt(str));
num2 = num2.map(str => parseInt(str));
console.log(num1);
console.log(num2);
}

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, что это хороший шаг к тому, что вы ищете:

Вопрос : что вы хотите получить в качестве результата при обнаружении десятичного значения?

// Soluce to replace NaN by '.'
function convertStrReplace(str1) {
  let num1 = str1.split('')
  
  num1 = num1.map(str => parseInt(str)).map(x => isNaN(x) ? '.' : x);
  
  console.log(num1);
}

// Soluce to ignore NaN
function convertStrIgnore(str1) {
  let num1 = str1.split('')
  
  num1 = num1.map(str => parseInt(str)).filter(x => !isNaN(x));
  
  console.log(num1);
}


convertStrReplace('17,52');
convertStrIgnore('17,52');

Альтернативный синтаксис

function convertStrFilter(str1) {
  const num1 = [
    ...str1,
  ].map(str => parseInt(str)).filter(x => !isNaN(x));

  console.log(num1);
}

convertStrFilter('17,52');

Объяснение о целочисленных и строковых различиях

// String and integer differences

// Put a number into a string
const str = '9000';

console.log(typeof str, str);

// Put a number into a number
const number = 9000;

console.log(typeof number, number);

// Compare both (compare value and type)
console.log('equality ===', str === number);

// Compare both (compare value)
console.log('equality ==', str == number);

const numberFromString = parseInt(str);

console.log(typeof numberFromString, numberFromString);

// Compare both (compare value and type)
console.log('equality ===', number === numberFromString);
...