URLSearchParams 介面定義處理 URL 參數串

來源:互聯網
上載者:User

標籤:動手   split   value   boolean   tostring   function   編程   文法   city   

基本使用方法如下

/** URLSearchParams屬性* @文法:new URLSearchParams(parameter);*/(function(){    var str = "http://www.domain.com/?user=Alan&id=123&id=456";    var searchParams = new URLSearchParams(str);    // let...of 文法(迭代對象)    for(let p of searchParams){        // console.log(p);    }/** URLSearchParams.append()* @添加新的key/value到URL中*/    searchParams.append("city", encodeURIComponent("深圳"));/** URLSearchParams.has()* @查詢是否存在,返回一個boolean值*/    searchParams.has("id");     // true/** URLSearchParams.get()* @返回相關聯的第一個值*/    searchParams.get("id");     // 123/** URLSearchParams.getAll()* @返回所有相同key的值*/    searchParams.getAll("id");  // ["123", "456"]/** URLSearchParams.set()* @設定key的value值,如果有多個,刪除其他的*/    searchParams.set("id", "789");/** searchParams.delete()* @刪除所有參數列表key與value值,重複的key都被刪除*/    searchParams.delete("id");/** searchParams.entries()* @返回所有索引值對key/value*/    for(let pair of searchParams.entries()){        console.log(pair[0]+ ‘, ‘+ pair[1]);     }/** searchParams.keys()* @返回所有鍵key*/    for(let key of searchParams.keys()){        console.log(key);     }/** searchParams.values()* @返回所有值*/    for(let value of searchParams.values()) {        console.log(value);    }/** searchParams.toString()* @返回修改過的URL*/    searchParams.toString();    console.log(searchParams.toString());}());

JS 編寫函數從下面的 URL 串中解析出所有的參數

http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&d&enabled

期望的返回結果格式如下:

{  user: ‘anonymous‘,  id: [123, 456],     // 重複出現的 key 要組裝成數組,能被轉成數位就轉成數字類型  city: ‘北京‘,        // 中文  enabled: true,      // 未指定值的 key 約定值為 true}

謀定而後動,動手前一定要搞清楚問題。怎樣才算是把問題搞清楚了?要清楚輸入的特徵,是否會出現各種奇怪的輸入

防禦性編程,檢測是否為字串

function parse(str){        if(typeof str !== "string"){            return;        }        var paramObj = {};        var decode = decodeURIComponent(str);   // 先解碼        var parsePart = decode.split("?#")[decode.split("?#").length-1];    // 截斷不需要部分        var paramArr = parsePart.split("&");            for(var i = 0; i < paramArr.length; i++){            var tmp = paramArr[i].split("=");            var key = tmp[0];                           var value = tmp[1] || true;                 // console.log("關鍵字是:" + key, "值是:" + value);            if(typeof paramObj[key] === "undefined"){                paramObj[key] = value;            }else{                var newValue = paramObj[key] + "," + value;     // 有多個重複的先連接字串,然後才分割開                paramObj[key] = newValue.split(",");            }        }        // console.log(paramObj);    }

 

URLSearchParams 介面定義處理 URL 參數串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.