首页 > 解决方案 > 使用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 };
});

标签: javascriptarraysecmascript-6javascript-objectsecmascript-5

解决方案


您可以使用三元运算符

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)


推荐阅读