[英]javascript -- converting string to array of tuples
我有一个要转换为数组的字符串
"[(6, 11), (12, 17), (18, 20)]"
.split()
不起作用(或者至少我不知道如何分隔单词)并且 JSON.parse 总是会出现Uncaught SyntaxError: Unexpected token
我正在这样转换: JSON.parse(THAT_GIVEN_LIST)
难道我做错了什么? 如何将这个字符串变成一个很好的[(6, 11), (12, 17), (18, 20)]
将输入格式设为 python 列表,您可以通过以下方式进行:
'use strict';
const tuple = "[(6, 11), (12, 17), (18, 20)]";
const tupleToArray = JSON.parse(tuple
.replace(/\(/g, '[')
.replace(/\)/g, ']')
);
console.log(tupleToArray);
您使用的括号在 JSON 的语法上不正确。 你假装他们的意思是定义一个元组。 但是,元组不是 JSON 原语。 如果你想拥有这样的嵌套结构,最好的办法是使用嵌套数组:
const a = "[[6, 11], [12, 17], [18, 20]]"; const aa = JSON.parse(a); console.log(aa); aa.forEach(i => console.log(`first: ${i[0]}, second: ${i[1]}`));
使用JSON.parse()
获取二维数组。 将出现的"("
替换为"["
并将")"
替换为"]"
。
var arr = JSON.parse("[(6, 11), (12, 17), (18, 20)]".split("(").join("[").split(")").join("]")); console.log(arr);
你可以像我在下面做的那样。 基本上我从原始字符串中删除了所有空格,然后使用正则表达式并将字符串split
为一个数组。 最后,我使用另一个正则表达式和展开运算符将格式化的字符串map
到一个新数组:
var s = "[(6, 11), (12, 17), (18, 20)]"; function makeTuple(str) { return str .replace(/\\s/g, "") .split("),(") .map(el => [...el.replace(/[\\[()\\]]/g, '').split(',')]); } console.log(makeTuple(s));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.