在JS中将字符串拆分为对象

时间:2018-05-10 12:25:22

标签: javascript

我从这样的服务器得到回复:

3S1,https://lekcjaplus.vulcan.net.pl
TA1,https://uonetplus-komunikacja.umt.tarnow.pl
OP1,https://uonetplus-komunikacja.eszkola.opolskie.pl
RZ1,https://uonetplus-komunikacja.resman.pl
GD1,https://uonetplus-komunikacja.edu.gdansk.pl
P03,https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl
P01,http://efeb-komunikacja.pro-hudson.win.vulcan.pl
P02,http://efeb-komunikacja.pro-hudsonrc.win.vulcan.pl
P90,http://efeb-komunikacja-pro-mwujakowska.neo.win.vulcan.pl

我想将它转换为这样的对象:

"3S1": "https://lekcjaplus.vulcan.net.pl",
"TA1": "https://uonetplus-komunikacja.umt.tarnow.pl",
"OP1": "https://uonetplus-komunikacja.eszkola.opolskie.pl",
"RZ1": "https://uonetplus-komunikacja.resman.pl",
"GD1": "https://uonetplus-komunikacja.edu.gdansk.pl",
"P03": "https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl",
"P01": "http://efeb-komunikacja.pro-hudson.win.vulcan.pl",
"P02": "http://efeb-komunikacja.pro-hudsonrc.win.vulcan.pl",
"P90": "http://efeb-komunikacja-pro-mwujakowska.neo.win.vulcan.pl"

实现这一目标的最简单方法是什么?

2 个答案:

答案 0 :(得分:5)

您可以split换行,然后使用reduce



let str = `3S1,https://lekcjaplus.vulcan.net.pl
	TA1,https://uonetplus-komunikacja.umt.tarnow.pl
	OP1,https://uonetplus-komunikacja.eszkola.opolskie.pl
	RZ1,https://uonetplus-komunikacja.resman.pl
	GD1,https://uonetplus-komunikacja.edu.gdansk.pl
	P03,https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl
	P01,http://efeb-komunikacja.pro-hudson.win.vulcan.pl
	P02,http://efeb-komunikacja.pro-hudsonrc.win.vulcan.pl
	P90,http://efeb-komunikacja-pro-mwujakowska.neo.win.vulcan.pl`;

let result = str.split(/\n/).reduce((c, v) => {
  if( v.trim() !== '' ) {
       let [k, o] = v.trim().split(',');
       c[k] = o;
  }
  return c;
}, {});

console.log(result);




如果每行有多个,,您可以解构数组并join(',')

let result = str.split(/\n/).reduce((c,v)=>{
    if( v.trim() ) {
        let [k,...o] = v.trim().split(',');
        c[k] = o.join(',');
    }
    return c;
},{});

答案 1 :(得分:0)

首先,您需要将字符串拆分为行

然后将每一行分成两部分,第一部分是一个键,第二部分是同一键的值。



let input = `3S1,https://lekcjaplus.vulcan.net.pl
TA1,https://uonetplus-komunikacja.umt.tarnow.pl
OP1,https://uonetplus-komunikacja.eszkola.opolskie.pl
RZ1,https://uonetplus-komunikacja.resman.pl
GD1,https://uonetplus-komunikacja.edu.gdansk.pl
P03,https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl
P01,http://efeb-komunikacja.pro-hudson.win.vulcan.pl
P02,http://efeb-komunikacja.pro-hudsonrc.win.vulcan.pl
P90,http://efeb-komunikacja-pro-mwujakowska.neo.win.vulcan.pl`;


output = input.split(/\n/g);

output = output.reduce((acc, item) => {
    item = item.split(",");
    acc[item[0]] = item[1];
    return acc;
}, {})

console.log(output);