转换为字符串、JavaScript时保留嵌套数组结构

转换为字符串、JavaScript时保留嵌套数组结构,javascript,arrays,string,multidimensional-array,Javascript,Arrays,String,Multidimensional Array,创建嵌套数组时,请说: let x = [[0, 1], 2, [3, [4, 5]]]; 并使用.toString()将其转换为字符串: 它不保留数组的嵌套结构。我想得到如下信息: x.toString(); -> "[0,1],2,[3,[4,5]]" 除了循环x元素、测试元素是否是数组等之外,还有什么更聪明的方法可以做到这一点吗?您可以使用JSON.stringify和replace ^\[|\]$ 设x=[[0,1],2,3,4,5]]; 让final=JSON.st

创建嵌套数组时,请说:

let x = [[0, 1], 2, [3, [4, 5]]]; 
并使用.toString()将其转换为字符串:

它不保留数组的嵌套结构。我想得到如下信息:

x.toString();
-> "[0,1],2,[3,[4,5]]"

除了循环x元素、测试元素是否是数组等之外,还有什么更聪明的方法可以做到这一点吗?

您可以使用JSON.stringify和replace

 ^\[|\]$

设x=[[0,1],2,3,4,5]];
让final=JSON.stringify(x)
//用正则表达式
console.log(final.replace(/^\[|\]$/g'))
//没有正则表达式

console.log(final.slice(1,-1))
您可以使用JSON.stringify和replace

 ^\[|\]$

设x=[[0,1],2,3,4,5]];
让final=JSON.stringify(x)
//用正则表达式
console.log(final.replace(/^\[|\]$/g'))
//没有正则表达式

console.log(final.slice(1,-1))
或可能使用生成器手动构建字符串:

 function* asNested(array) {
    for(const el of array)
      if(Array.isArray(el)) {
         yield "[";
         yield* asNested(el);
          yield "]";
      } else yield el.toString();
 }

 const result = [...asNested([[1, 2], [3, 4]])].join("");

或者可能使用生成器手动构建字符串:

 function* asNested(array) {
    for(const el of array)
      if(Array.isArray(el)) {
         yield "[";
         yield* asNested(el);
          yield "]";
      } else yield el.toString();
 }

 const result = [...asNested([[1, 2], [3, 4]])].join("");

您是否尝试过
JSON.stringify(x)
?我没有想过使用stringify,然后我可以将第一个和最后一个括号用子串出来…
JSON.stringify(x).slice(1,-1)
您尝试过
JSON.stringify(x)
?我没有想过使用stringify,然后我就可以把第一个和最后一个括号的子串出来…
JSON.stringify(x).slice(1,-1)
,或者通过
slice
做一个子串?我会在一分钟后接受它,它会让我:)我没有想过使用正则表达式,我只是想用@Li357注释的子串或切片。这是一个有趣的方法。@Li357是的,做得很公平,也可以加上:)或者通过
slice
做一个子字符串?我会在一分钟后接受它,它会让我:)我没有想过使用正则表达式,我只是像@Li357那样做子字符串或切片。这是一个有趣的方法。@Li357是的,做得很公平,也要补充:)与上述方法相比,这似乎不必要地复杂,而且似乎会占用更多的时间和计算机资源,这基本上是我在问题中不喜欢的方法。更复杂,是的,不一定慢。与上述方法相比,这似乎不必要地复杂,而且似乎需要更多的时间和计算机资源,这基本上是我在问题中不喜欢的方法。更复杂,是的,不一定慢。