[英]JavaScript convert String to object
人們使用js庫(例如underscore
, underscore.string
或lodash
,將以下String轉換為Object
'animals=cat&dogs&horses&fish=salmon&tuna';
以下是不變的: animals
和fish
。 分隔符為=
結果應如下所示:
{
animals: 'cats&dogs&horses',
fish: 'salmon&tona'
}
animals
和fish
可以以任何順序出現在弦中。
謝謝!
PS它不是JavaScript中解析查詢字符串的重復...因為要求是返回一個對象以供以后解析...
快速香草js解決方案:
function parseQuery (string) { var result = {}, components, i, firstPair, current; components = string.split("&"); for (i = 0; i < components.length; i++) { if (components[i].indexOf("=") !== -1) { if (typeof current !== "undefined") { result[current] = result[current].join("&"); } firstPair = components[i].split("="); current = firstPair[0]; result[current] = [firstPair[1]]; } else { result[current].push(components[i]); } } result[current] = result[current].join("&"); return result; }
這更加緊湊:
var x = 'animals=cat&dogs&horses&fish=salmon&tuna';
使用split
功能分割字符串,該功能split
保留拆分器,這些split
器是拆分正則表達式中的組。 我們分割從字符串開頭或以&
開頭並在末尾包含=
的所有內容:
var pieces = x.split(/((?:^|&)\w+=)/) . filter(Boolean);
>> ["animals=", "cat&dogs&horses", "&fish=", "salmon&tuna"]
結果將是散布的鍵名和值的數組。 將其處理為一個對象:
var result = {};
for (var i=0; i<pieces.length; i+=2) {
result[pieces[i].replace(/^&|=$/g, '')] = pieces[i+1];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.