猿问

将字符串转换为数组中的键值对

我有一个字符串:


var rrule = "DTSTART=20190514T111500Z;FREQ=DAILY;INTERVAL=1";

我想将此字符串转换为数组中的键-> 值对。


[

  dtstart: 20190514T111500Z, 

  freq: daily,

  interval: 1

]

我知道我可以使用字符串并根据分号拆分它:


var array = rrule.split(";");

...但这给我留下了一个这样的数组:


[

  "DTSTART=20190514T111500Z",

  "FREQ=DAILY",

  "INTERVAL=1"

]

我想我需要另一个步骤来映射键/值,但此时我迷路了。


理想情况下,对于字符串,我希望能够轻松访问 dtstarts 等于什么、什么间隔等于、什么其他变量等于等等。


萧十郎
浏览 432回答 2
2回答

SMILET

let str = "DTSTART=20190514T111500Z;FREQ=DAILY;INTERVAL=1";let obj = {};for (let entry of str.split(";")) {  let pair = entry.split("=");  obj[pair[0]] = pair[1];}console.log(obj);

Helenr

您首先从 split 开始是正确的,然后这将返回一个字符串数组。要轻松转换它们,只需使用map, 再次返回拆分的单个字符串,然后根据您想给它的属性名称及其值返回一个对象function createKeyValuePairFromString( str ) {  return str.split(';').map( item => {    const splitted = item.split('=');    return { [splitted[0]]: splitted[1] };  });}console.log( createKeyValuePairFromString("DTSTART=20190514T111500Z;FREQ=DAILY;INTERVAL=1") );
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答