JavaScript将字符串转换为对象
各位,使用js库,例如JavaScript将字符串转换为对象,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,各位,使用js库,例如下划线,下划线.string,或lodash,我想将以下字符串转换为一个对象 'animals=cat&dogs&horses&fish=salmon&tuna'; 以下是常量:动物和鱼。分隔符为= 结果应该如下所示: { animals: 'cats&dogs&horses', fish: 'salmon&tona' } 动物和鱼可以以任何顺序出现在字符串中 谢谢 PS这不是…的复制品。。。由于要
下划线
,下划线.string
,或lodash
,我想将以下字符串转换为一个对象
'animals=cat&dogs&horses&fish=salmon&tuna';
以下是常量:动物
和鱼
。分隔符为=
结果应该如下所示:
{
animals: 'cats&dogs&horses',
fish: 'salmon&tona'
}
动物
和鱼
可以以任何顺序出现在字符串中
谢谢
PS这不是…的复制品。。。由于要求返回一个对象以供以后解析…Quick vanilla js解决方案:
函数解析查询(字符串){
var result={},components,i,firstPair,current;
components=string.split(“&”);
对于(i=0;i }
这是一个更紧凑的设计:
var x = 'animals=cat&dogs&horses&fish=salmon&tuna';
使用Split
功能拆分字符串,该功能保留拆分器,拆分器是拆分regexp中的组。我们对任何从字符串开头或以&
开头,并在末尾包含=
的内容进行拆分:
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];
}
var result={};
对于(var i=0;它是一个重复项。请参见此处:顺便说一句,在Javascript中,字符串是对象。正确的标题应该是:将查询转换为键值object@david,很好的预感,但我真的需要逃避&
,因此使用请求。_parsedUrl.query
而不是请求.query
。谢谢!那么我怎么才能在loo中得到结果呢king for?:)你在链接中看到了吗?@torazaburo,查询字符串在我的情况下是正确的,因此我发布了这个问题。我真的希望有人回答这个问题,而不是链接到stackoverflow上的其他问题:)但这不会给出期望的结果,因为符号与用于值本身内部和值之间的分隔。它适用于样本,也适用于任何其他模式:key=val&val&key=val&val
。通过检查是否包含=
,可以区分带有键的组件;这绕过了符号的模糊性。