在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ url中的參數(shù)提取為對象,這樣的寫法不對么

url中的參數(shù)提取為對象,這樣的寫法不對么

面試碰到這個問題,我按照這個思路寫的方案,他最后讓我回去再看看,我想問下,還有什么更好的實(shí)現(xiàn)方式么?

var url = "http://www.xxxx.com/index.html?keya=a&b=b&c=c";   
function parseQueryString(argu){
  var str = argu.split('?')[1];
  var result = {};
  var temp = str.split('&');
  temp.forEach(function(item){ 
    var temp2 = item.split('=');
    result[temp2[0]] = temp2[1];
  })
  return result;
}
console.log(parseQueryString(url))

回答
編輯回答
挽青絲

“讓我回去再看看”,怕是少了個 decodeURIComponent?
犀牛書上有一段:

function urlArgs() {
    var args = {}
    var query = location.search.substring(1)
    var pairs = query.split("&")
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf("=")
        if (pos == -1) continue
        var name = pairs[i].substring(0, pos)
        var value = pairs[i].substring(pos + 1)
        value = decodeURIComponent(value)
        args[name] = value
    }
    return args
}
2017年10月19日 23:18
編輯回答
尤禮

可以用正則/(1+)=1/g
另外注意一個建可能有多個值
比如?a=1&a=2這種要搞成一個數(shù)組


  1. =&? ?
2017年1月5日 18:05
編輯回答
離人歸

感覺你的思路沒有問題。精簡結(jié)構(gòu),我能寫成這樣

const parseQueryString = argu => (
  argu.split('?')[1]
    .split('&')
    .reduce((result, pair) => {
      const [key, value] = pair.split('=')
      return {
        ...result,
        ...((key && value) ? { [key]: value } : {})
      }
    }, {})
)

另外你似乎沒考慮鍵值對可能出錯的情況

2018年4月3日 20:14