#独家
js如何实现将’a=b’格式的字符串与键值对的相互转换?

2023-06-02 0 3,933

项目里有一个地方要求用户填写的动参,原始格式为形如

“key1=value1
key2=value2
key3=value3″

的字符串
但是在接口提交时,需要将其转换为键值对
{ key1: value1, key2: value2, key3: value3 }
然后从后台获取到这样的键值对时,在页面中要转换成原始格式的字符串用于回显。
想询问一下原生js有没有直观好用的方法把数据在这两种结构间相互转化

const originData = 'key1=value1\nkey2 =value2\n\nkey3==value3\nkey4'
let resquestData = Object.assign({}, ...originData.split('\n').map(item => {
  if (item && item.includes('=')) {
    let arr = item.split('=')
    return { [arr[0].trim()]: arr[1]?.trim() }
  }
}))
let displayData = Object.keys(resquestData).map((item, index) => {
  return `${item}=${Object.values(resquestData)[index]}`
}).join('\n')

上述代码是目前我的实现方法
但是有几个比较明显的问题,首先是我个人感觉可读性非常差;
其次是虽然对原始数据的一些错误格式进行了一定的处理,
但是总感觉这么复杂的表达式,
在面对一些意料外的输入时可能会导致报错从而导致页面的功能异常。
在此询问一下是否有可替代的更优解

模拟输入数据

const rawData = [
    "key1=value1",
    "key2=value2",
    "key3=value3"
].join("\n");

转成对象,再处理成 JSON

const obj = Object.fromEntries(
    rawData.split(/[\r\n]+/)
        .map(line => line.split("="))
);

const json = JSON.stringify(obj);
console.log(json);
// {"key1":"value1","key2":"value2","key3":"value3"}

把 JSON 转换回来(解析成对象再处理成文本)

const text = Object.entries(JSON.parse(json))
    .map(([key, value]) => `${key}=${value}`)
    .join("\n");

console.log(text);

// key1=value1
// key2=value2
// key3=value3
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 js如何实现将’a=b’格式的字符串与键值对的相互转换? https://www.jkxiazai.com/1776.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务