Как я могу свести к минимуму мою функцию JavaScript? - PullRequest
0 голосов
/ 26 февраля 2019

Я делаю функцию JavaScript, которая извлекает определенные вещи из URL и вычисляет значение.Эта функция работает хорошо, но я хотел бы получить некоторую обратную связь о том, как я могу минимизировать эту функцию с меньшим количеством кода.Сейчас это выглядит грязно.

Я был бы очень признателен за помощь.

Код:

getURL()
        {
            const myURL = this.blok.image;


                if (myURL != null)
                {
                    const split = myURL.split('/');

                    const array = split[5];

                    const split2 = array.split('x');

                    const height = split2[0];

                    const width  = split2[1];

                    const calc = width / height * 100;

                    alert(calc);
                }
                else {

                    return
                }
        }

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вместо разделения вы можете использовать регулярное выражение для получения двух чисел.Чем просто выполнить расчет с двумя группами захвата.

const path = "/foo/bar/30x100/world"
const nums = "/foo/bar/30x100/world".match(/(\d+)x(\d+)/)
const result = nums 
  ? Number(nums[1]) / Number(nums[2]) * 100
  : null
console.log(result)

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

const split = myURL.split('/')[5].split('x');
const calc = Number(split[0]) / Number(split[1]) * 100;
console.log(calc);
0 голосов
/ 26 февраля 2019

Вы можете поместить эти разбиения в одну строку и использовать назначение деструктуры, чтобы получить width и height:

const [width, height] = myURL.split("/")[5].split("x");

Или использовать RegEx:

const [width, height] = url.match(/\d+x\d+/)[0].split('x');

const url = `//a.storyblok.com/f/53830/6015x3900/7cea8305a6/mohit-singh-312892-unsplash.jpg`;

function getURL(myURL) {
  if (url != null) {
    const [width, height] = myURL.split("/")[5].split("x");
    const calc = (width / height) * 100;
    return calc;
  } else {
    return;
  }
}

const result = getURL(url);
console.log(result); 

/***********************/

const getUrl2 = url => {
  const [width, height] = url.match(/\d+x\d+/)[0].split('x')
  return (width / height) * 100;
}

const result2 = getUrl2(url);
console.log(result2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...