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:使用自定义键名和值将字符串数组解析为对象的主要内容,如果未能解决你的问题,请参考以下文章

delphi 操作ini文件 知道小节名和值,怎么得到关键字

PHP数组

PHP array_diff_uassoc

php下将多个数组合并成一个数组的方法与实例代码

PHP数组大全

数组大全