Javascript:使用自定义键名和值将字符串数组解析为对象
Posted
技术标签:
【中文标题】Javascript:使用自定义键名和值将字符串数组解析为对象【英文标题】:Javascript: Parse string array into object with custom key names and values 【发布时间】:2018-04-20 17:31:44 【问题描述】:所以我有一个字符串,其中包含以下格式的自定义 http 标头列表:
var headers = "Referer=SomeValue|User-Agent=SomeUserAgent";
我使用管道作为分隔符将其拆分:
var splitHeaders = headers.split("|");
我留下了一个可以循环的数组,我正在尝试将该字符串数组转换为一个对象。这是我目前所拥有的:
var customHeaders = ;
for (var i in splitHeaders)
var data = splitHeaders[i].split("=");
customHeaders[data[0]] = data[1];
我实际上想要创建的是一个名为 customHeaders 的对象,用于保存以下值:
customHeaders =
"Referer":"https://someurl.com/",
"User-Agent":"Some Browser"
;
我做错了吗?
【问题讨论】:
【参考方案1】:你在正确的轨道上。使用 splitHeaders
的长度作为限制器,使用更标准的 for 循环形式:
for (var i = 0; i < splitHeaders.length; i++)
工作示例:
var headers = "Referer=SomeValue|User-Agent=SomeUserAgent";
var splitHeaders = headers.split('|');
var customHeaders = ;
for (var i = 0; i < splitHeaders.length; i++)
var data = splitHeaders[i].split("=");
customHeaders[data[0]] = data[1];
console.log(customHeaders);
您还可以使用其他方法将项目数组转换为对象,例如 reduce。
var headers = "Referer=SomeValue|User-Agent=SomeUserAgent";
headers = headers
.split('|')
.reduce(function(obj, val)
var split = val.split('=');
obj[split[0]] = split[1];
return obj;
, );
console.log(headers);
【讨论】:
另外感谢reduce函数的参考,我还在学习JS,这会有所帮助!以上是关于Javascript:使用自定义键名和值将字符串数组解析为对象的主要内容,如果未能解决你的问题,请参考以下文章