【问题标题】:How convert PostgreSQL Array to JS如何将 PostgreSQL 数组转换为 JS
【发布时间】:2019-05-29 23:42:29
【问题描述】:

如何将 PostgreSQL 数组转换为字符串,例如。 "{1,2,3,4}" 到 javascript/typescript 数组:[1,2,3,4]。 数组中的值必须是数字类型。

我尝试了使用 replacesplit 的解决方案,但它返回字符串值。

var test = "{1,2,3,4}";
test = test.replace("{", "");
test = test.replace("}", "");
//test = test.replace(/\{|\}/gm, "")  //regex replace
test.split(",")   //['1', '2', '3', '4']

【问题讨论】:

  • 您不应该这样做。 postgresql 驱动程序应该为您完成。你用的是哪一个?
  • 你可以用方括号替换大括号,然后使用 JSON.parse 方法。像这样JSON.parse(test.replace("{", "[").replace("}", "]"))
  • @DenysSéguret 我无权访问整个后端的功能。
  • @shajji 我知道,我只是想展示我正在做的所有步骤。
  • 修复后端可能是正确的解决方案,但我知道并非所有项目都得到理想管理...

标签: javascript arrays string typescript type-conversion


【解决方案1】:

一种更简洁的解决方案,不涉及构建 JSON 字符串来解析它:

test = test.match(/[\w.-]+/g).map(Number)

但是在处理数据库时,通常不应该自己解析数据,除非你正在编写驱动程序(但对于 postgresql 已经有很好的驱动程序了)。

【讨论】:

    【解决方案2】:

    我找到了 JSON.parse 的解决方案,但这也需要在转换之前 replace

    var test = "{1,2,3,4}";
    test = test.replace("{", "[");
    test = test.replace("}", "]");
    JSON.parse(test)  //[1, 2, 3, 4]
    

    为数组大小构建一个字符串进行测试:100000~900000:https://stackblitz.com/edit/typescript-gavnpg

    【讨论】:

      【解决方案3】:
      JSON.parse("[" + test.slice(1, test.length-1) + "]")
      

      【讨论】:

      • 请在您的答案中添加上下文,解释这是如何解决问题的。谢谢! --来自评论
      猜你喜欢
      • 2011-03-05
      • 2014-06-26
      • 1970-01-01
      • 2012-05-07
      • 2022-08-08
      • 1970-01-01
      • 2015-12-29
      • 2021-10-18
      相关资源
      最近更新 更多