繁体   English   中英

javascript - 将字符串转换为元组数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM