簡體   English   中英

JavaScript將String轉換為對象

[英]JavaScript convert String to object

人們使用js庫(例如underscoreunderscore.stringlodash ,將以下String轉換為Object

'animals=cat&dogs&horses&fish=salmon&tuna';

以下是不變的: animalsfish 分隔符為=

結果應如下所示:

{
    animals: 'cats&dogs&horses',
    fish: 'salmon&tona'
}

animalsfish可以以任何順序出現在弦中。

謝謝!

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM