所以我有一个字符串,其中包含一个自定义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"
};
我做错了吗?
答案 0 :(得分:0)
你走在正确的轨道上。使用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);