javascript - 解析另一个对象角度中的字符串值
问题描述
我有一些这样的字符串
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
解决方案
您的函数不起作用,因为正如 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];
}
推荐阅读
- c# - 如何模拟(使用 Moq)由 Newtonsoft.json 序列化的接口?
- javascript - JQuery 显示/隐藏 DIV 无法正常工作
- python - keras 卷积层中的内核大小是如何定义的?
- c# - 如何管理不同服务器上的多个服务
- c# - WebView 中的 WebGL 在 UNO 构建中不起作用,但在 Xamarin 构建中起作用
- html2canvas - html2Canvas - 返回的画布为空
- javascript - 带有回调的 useEffect 不更新状态
- polymer - Polymer 3 - 如何构建用于另一个项目的组件
- javascript - 考虑到性能和广告显示,如何使用 React 和样式化组件在 2 个响应式标题(移动和桌面)之间切换?
- reactjs - 将导入的 .less 文件转换为 css 字符串