Size: a a a

JavaScript Noobs — сообщество новичков

2021 September 30

Е

Екатерина in JavaScript Noobs — сообщество новичков
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
уровень
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
ну это прям сильно проще регулярками делается
источник

Е

Екатерина in JavaScript Noobs — сообщество новичков
меня интересует не решение, а то, почему при одинаковом коде на выходе строки вообще разной длины даже получаются
источник

{

{ Max: 'JS Engineer'... in JavaScript Noobs — сообщество новичков
А по другому?

я так сделал

const calcNumbers = (num1, num2, sign) => {
 switch(sign) {
   case '+':
     return num1 + num2;
     break;
   case '-':
     return num1 - num2;
     break;    
   case '/':
     return num1 / num2;
     break;
   case '*':
     return num1 / num2;
     break;
 }
};

const extractSign = (str) => {
 const signs = ['+', '-', '/', '*']
 let sign
 for (char of str) {
   if (signs.includes(char)) {
     sign = char;
   }
 }
 return sign;
};

const input = "4 /2";

console.log(calcNumbers(+input[0], +input[input.length - 1], extractSign(input)))
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
а если в начале/конце оператор будет?
источник

{

{ Max: 'JS Engineer'... in JavaScript Noobs — сообщество новичков
Тогда надо переделать
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
вас просят по 1 пробелу, у вас по два, в итоге вы два пробелма меняете на "1". это вот то что явно не так)
а в самом коде копаться не хочется, мне сложно читать(
источник

Е

Екатерина in JavaScript Noobs — сообщество новичков
я знаю, что не так, вопрос в том, с чего вдруг. я ввожу 1 пробел. если заменить на любой другой символ, все ок, почему пробел двойной...
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
можно матчем найти индекс оператора, дальше проверка, что он есть, он не в начале и не в конце
потом сплитим, дальше проверяем, что таких отрезка 2 всего
потом трим
потом проверяем, что обе подстроки - валидные числа (неважное римские или арабские циферки)
перегоняем в числа, считаем

UPD: матчОл, кнчн, и если несколько от до сплита и не дойдёт, так что нет смысла проверять, скок отрезочков
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
вы в slice учли, что end не включается?
источник

Е

Екатерина in JavaScript Noobs — сообщество новичков
да. у меня все корректно работает с любым другим символом. и кстати при 1 пробеле он даже на тройной заменяет, по-моему. а вот двойной пробел на двойной. магия какая-то
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
еле понял логику, если честно хд
крч, нет, не работает корректно с другими символами. косяк один везде
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
я проверил, если что, на всякий
источник

{

{ Max: 'JS Engineer'... in JavaScript Noobs — сообщество новичков
const calcNumbers = ([num1, sign, num2]) => {
 switch (sign) {
   case "+":
     return num1 + num2;
     break;
   case "-":
     return num1 - num2;
     break;
   case "/":
     return num1 / num2;
     break;
   case "*":
     return num1 * num2;
     break;
 }
};

const extractParticles = (str) => {
 const signs = ["+", "-", "/", "*"];
 const numbers = [];
 let sign = "";

 for (char of str) {
   if (signs.includes(char)) {
     sign = char;
   } else if (char !== ' ' && typeof +char === "number") {
     numbers.push(char);
   }
 }
 return [+numbers[0], sign, +numbers[1]];
};

const input = "2 *2";

console.log(calcNumbers(extractParticles(input)));
источник

{

{ Max: 'JS Engineer'... in JavaScript Noobs — сообщество новичков
страшно вырубай)
источник

Е

Екатерина in JavaScript Noobs — сообщество новичков
да нет, работает, причем в кодпене и с пробелом все ок. какой-то баг кодварс походу
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
я проверил только что, вам скрины нужны в качестве доказательств или что?
источник

Е

Екатерина in JavaScript Noobs — сообщество новичков
источник

IS

Ivan Savin in JavaScript Noobs — сообщество новичков
я решил её сразу, как написал вам про регулярки, всё прекрасно работает
источник