如何将PostgreSQL数组转换为JS

3
如何将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']

2
你不应该这样做。PostgreSQL驱动程序应该为您完成它。您使用的是哪一个? - Denys Séguret
你可以将花括号替换为方括号,然后使用JSON.parse方法。像这样:JSON.parse(test.replace("{", "[").replace("}", "]")) - shajji
@shajji 我知道,我只是想展示我所做的所有步骤。 - ambussh
2
修复后端可能是正确的解决方案,但我知道并非所有项目都得到了理想的管理... - Denys Séguret
1
PostgreSQL支持JSON类型,我建议您使用它,它更高效,而且没有理由在其中错误地格式化数组。 - Dominic
显示剩余3条评论
3个回答

4
一种更简洁的解决方案,不涉及构建JSON字符串以进行解析:
test = test.match(/[\w.-]+/g).map(Number)

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


1
JSON.parse("[" + test.slice(1, test.length-1) + "]")

请在您的答案中添加上下文,解释这是如何解决问题的。谢谢!--来自审查 - d_kennetz

1
我通过使用JSON.parse找到了解决方案,但在转换之前还需要进行替换
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接