首页 > 解决方案 > 解析另一个对象角度中的字符串值

问题描述

我有一些这样的字符串

 const resultComing ='access_token=test&token_type=bearer&state=state&expires_in=43199&scope=test';

我需要传递给看起来像这样的对象

const result: any = {
  access_token: test,
  token_type: bearer,
  state: state,
  expires_in: 43199,
  scope: test
};

我试过这样

const result: any = resultComing.split('&').reduce(function (result: any, item: string) {
  const parts = item.split('=');
  result[parts[0]] = parts[1];
}, {});

但我得到了错误,TypeError: Cannot set property 'token_type' of undefined

标签: javascripttypescript

解决方案


您的函数不起作用,因为正如 Niet 所说,您不会从Array.reduce()函数返回任何内容,因此下次迭代它时,result将是未定义的。

要修复它,只需在最后返回结果:

const result: any = resultComing.split('&').reduce(function (result: any, item: string) {
    const parts = item.split('=');
    result[parts[0]] = parts[1];
    return result;
}, {});

如果你不想要箭头功能,你也可以用一个简单的循环来检查你的配对:

let obj: any = {};
let pairs = resultComing.split('&');

for (let pair of pairs) {
    let parts = pair.split('=');
    obj[parts[0]] = parts[1];
}

游乐场链接


推荐阅读