如何按原样打印数组

时间:2019-02-09 18:53:17

标签: javascript

说我有一个数组“ x”,x在控制台中显示为<Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" xmlns:cc="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1" Title="MainWindow" Height="200" Width="200"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBox Grid.Row="0" x:Name="TitleBox" Text="ABC"/> <Frame Grid.Row="1" x:Name="DisFrame"> <Frame.Content> <cc:InputValuePage InputTitle="{Binding ElementName=TitleBox, Path=Text}"/> </Frame.Content> </Frame> </Grid> </Window> 。如何将其全部转换为带有所有括号和引号的字符串?

例如,这应该输出  [["A", "B", "C"], ["D", "E", "F"]] (如果可能的话,将反斜杠添加到特殊字符(例如"[["A", "B", "C"], ["D", "E", "F"]]")也很好)

2 个答案:

答案 0 :(得分:0)

尝试JSON.stringify

var x = [["A", "B", "C"], ["D", "E", "F"]];
var string = JSON.stringify(x);

答案 1 :(得分:0)

要像在控制台中一样打印它,可以使用loadable-components

JSON.stringify()

如果您还想在每个括号和引号中添加反斜杠,则可以遍历字符串的每个字符,并在需要的地方添加反斜杠。

const arr = [["A", "B", "C"], ["D", "E", "F"]];
const str = JSON.stringify(arr); // [["A","B","C"],["D","E","F"]]

如果您不想使用ES6,则可以通过简单的for循环进行操作

// ES6 version
let escapedStr = "";
[...str].forEach(c => {
    if (c === ']' || c === '[' || c === '"') c = `\\${c}`;
    escapedStr += c;
});

console.log(escapedStr) // \[\[\"A\",\"B\",\"C\"\],\[\"D\",\"E\",\"F\"\]\] 

编辑:使用正则表达式可以一站式解决问题

for (var i = 0, c=''; c = str.charAt(i); i++) { 
    if (c === ']' || c === '[' || c === '"') c = `\\${c}`;
    escapedStr += c;
}