我注意到array.join的输出不正确,包含(\ r)字符的字符串数组。这是我的代码和输出:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MakeTable();
}
public async void MakeTable()
{
var task = await Task<DataTable>.Factory.StartNew(() =>
{
var tbl = new DataTable();
for (int i = 1; i < 5; i++)
{
tbl.Columns.Add("Coloumn" + i, typeof(int));
}
for (int j = 0; j <= 30; j++)
{
var nuRow = tbl.NewRow();
for (int k = 0; k < 4; k++)
{
nuRow[k] = j;
}
Thread.Sleep(50);
tbl.Rows.Add(nuRow);
}
return tbl;
});
ExportGrid.ItemsSource = task.DefaultView;
}
}
它在chrome / firefox控制台中运行良好,而不是在nodejs中。 如果重要的话,我在linux mint 18.3上使用节点6.11.3
我可以为此做一些变通办法,但我对这种情况发生的原因更感兴趣。
答案 0 :(得分:2)
实际上字符串在你的代码中成功连接,输出结果“,foure”是由char'\ r'引起的,它叫做“linefeed”,Linux / macOS终端中的换行符将光标移动到一个开头行,所以:
最后一个字母“e”来自“三”,\r
不是“新行”。
使用“\ n”Carriage Return
输出新行,只需将其放入“join(',\ n')”,而不是将其放入数组元素中。
var list = [
"one",
"two",
"three",
"four"];
console.log(list); // ok, output: [ 'one', 'two', 'three', 'four' ]
console.log(list.join(',\n'));