2017-04-03 64 views
1

在Javascript中,如果您的键/值数组对为serialize(),那么您将得到类似single=Single&multiple=Multiple的东西。有什么办法可以“反序列化”这个字符串来重新获得一个键/值对的数组吗?如果不是,最有效的方法是什么?将请求字符串反序列化为数组

+0

http://stackoverflow.com/a/6487719/1568059 - 也许这个回答你的问题。 –

+0

你的数据结构是什么样的,你确定你有数组而不是对象吗? – vol7ron

回答

0

由于这里回答:https://stackoverflow.com/a/10126995/183181

var str = 'single=Single&multiple=Multiple'; 
 
console.log(getParams(str)); 
 

 

 
function getParams (str) { 
 
    var queryString = str || window.location.search || ''; 
 
    var keyValPairs = []; 
 
    var params  = {}; 
 
    queryString  = queryString.replace(/.*?\?/,""); 
 

 
    if (queryString.length) 
 
    { 
 
     keyValPairs = queryString.split('&'); 
 
     for (pairNum in keyValPairs) 
 
     { 
 
     var key = keyValPairs[pairNum].split('=')[0]; 
 
     if (!key.length) continue; 
 
     if (typeof params[key] === 'undefined') 
 
     params[key] = []; 
 
     params[key].push(keyValPairs[pairNum].split('=')[1]); 
 
     } 
 
    } 
 
    return params; 
 
}

+1

我认为你应该将问题标记为重复而不是重现相同的答案。 – trincot

+0

@trincot我认为你是对的;)虽然,直到确定了他期望数据被格式化的程度,我也会在这里 – vol7ron

相关问题