前端经常使用的小函数(1)---剖析url

写作背景

算上练习时候,已进修前端两年了。学问结构很乱,须要有一个网络化的总结。

写作目标

学问总结,交友一些前端的小伙伴。

需求

要求某些后端的接口,须要前端供应一些特定的要求参数。

注重事项

1.剖析的是不是为一般的url (有时候也会剖析带hash的url)。

2.url 中是不是有空格等字符串

学问排列

1.数组的扁平化处置惩罚

2.正则婚配

3.模板字符串拼接

$(function() {
  const $input = $(".input");
  const $queriesContainer = $(".queries-container");
  const testUrl = "url"; 
  const trimUrl = str => str.replace(/\s+/g, "");
  const getUrlQueries = u => {
    // 去除url 中的空格
    const url = trimUrl(u);
    if (!(url && url.includes("?"))) return "";
    const startPoint = url.indexOf("?") + 1;
    // 注重React运用hash router
    const endPoint = url.indexOf("#") > -1 ? url.indexOf("#") : url.length + 1;
    const urlSegment = url.slice(startPoint, endPoint);
    return urlSegment.split("&").reduce((result, item) => {
      const tmp = item.split("=");
      result[tmp[0]] = tmp[1];
      return result;
    }, {});
  };

  const renderUrlQueries = queries =>
    Object.entries(queries).reduce((result, item, currentIndex) => {
      result += `<li class="list-query">${currentIndex +
        1}.&nbsp;&nbsp;<span class="key">${
        item[0]
      }</span> : <span class="value">${item[1]}</span></li>`;
      return result;
    }, "");

  const getRender = () => {
    const url = $input.val();
    const queries = getUrlQueries(url);
    $queriesContainer.html(renderUrlQueries(queries));
  };

  const init = () => {
    $input.val(testUrl);
    getRender();
  };

  init();

  $input.on("input", () => getRender());
});

在线demo
不足

1.场景斟酌的不够充足。

2.没有完整运用ES6(indexOf->includes).

    原文作者:DrivingFatigue
    原文地址: https://segmentfault.com/a/1190000015978052
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞