javascript - 使用javascript的split方法避免字符串“null”
问题描述
我正在尝试解析具有以下格式的字符串
"value1=name1:value2=test1,value1=name2:value2=null,value1=null:value2=test3"
我希望将其解析为
[{ value1: "name1", value2: "test1"}, { value1: "name2", value2: "NA"},{ value1: "NA", value2: "test3"}]
如果拆分后的任何值为 null ,则 make 为“NA”。由于我使用split
的是 null 值,因此被强制转换为字符串。因此使用设置“NA”nullish coalescing(??)
不起作用,因此它仍然返回 null 而不是 NA。如果任何机构可以提出一种更简单的方法来实现这一点,这也会有所帮助
我尝试过的代码。
let input = "value1=name1:value2=test1,value1=name2:value2=null,value1=null:value2=test3";
let items = input.split(",");
let pairs = items.map((item) => {
let splitItems = item.split(":");
let value1 = splitItems[0].split("=")?? "NA";;
let value2 = splitItems[1].split("=") ?? "NA";
return { value1, value2 };
});
解决方案
您可以使用三元运算符
const str =
"value1=name1:value2=test1,value1=name2:value2=test2,value1=null:value2=test3"
const res = str.split(",").map((el) =>
el.split(":").reduce((acc, pair) => {
const [key, value = "NA"] = pair.split("=")
return {
...acc,
[key]: value === "null" ? "NA" : value,
}
}, {})
)
console.log(res)
推荐阅读
- javascript - 在嵌套的 Promise 中传递对象
- java - 是否可以使用 JGit 的内存存储库将一个小文件添加到一个大的 Git 存储库而无需在本地签出?
- javascript - 通过选择选择选项将用户发送到链接
- python - pytest:从函数输出/从目录结构参数化
- php - 如何在 woocommerce rest api 中获取运费?
- python - SQL Alchemy 会话从 Postgres 返回相同的数据
- c# - 使用 DynamicData 的数据虚拟化
- python - Python中的操作系统独立路径导入
- php - 如何使用 symfony 棘轮向特定的 websocket 客户端发送消息?
- ms-access - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册