为什么console.table()不适用于所有对象/数组?

时间:2017-01-20 00:08:49

标签: javascript browser

为什么console.table()不适用于所有对象/数组?

通过一些数据,我在开发者控制台中获得了格式良好的表格。对于其他数据,我什么都没得到......甚至没有错误信息。

我在遇到#Javascript30的挑战时刚刚了解了console.table()。演示者使用console.table()来表示某些输出,但不是全部,并且他没有解释原因。我试图将它用于所有(数组或对象)输出,并看到为什么......它不起作用。

这是一个不起作用的例子。

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];

const transportation = data.reduce((counters, item) => {
  if (!counters[item]) counters[item] = 0;
  counters[item]++;
  return counters;
}, {});
console.log('transportation table');
console.table(transportation);

console.log('transportation log');
console.log(transportation);
<h1>Look at the console!</h1>

我希望console.table()返回类似这样的内容:

MDN Example

...除了(索引)列包含汽车,卡车,自行车等,而且“值”列将包含计数。

更新

显然console.table()不适用于SO的代码片段...在这种情况下意味着它与浏览器的工作方式完全相同:P所以,我在CodePen上发布了一个问题示例: http://codepen.io/VAggrippino/pen/qRraEP

这是第四次挑战,Array Cardio 1对于那些跟随你的人。

我意识到这不是一个严格的编程/ JavaScript问题,因为控制台是浏览器的一个功能,而不是语言或DOM。我相信它是相关的,因为浏览器是所有Web开发人员使用的基本工具,并且每个主要浏览器都支持它。

4 个答案:

答案 0 :(得分:30)

我目前正在为JS30进行相同的练习,遇到了和你一样的问题,这引起了我的兴趣。

我咨询了console.table() page on MDN,在做了一些测试之后,似乎这可能是Chrome问题。

从我的有限测试中看来,Chrome似乎没有为原始类型集合(字符串数组,单个对象)输出表,只输出复合类型的集合(数组/对象数组,属性为的对象)对象)。

这不起作用:

console.table(['1','2','3']);

但这样做:

console.table([['1','2','3']]);

我也在Canary上测试过,但结果相同。

但是在Firefox上,console.table()似乎工作正常。原始类型集合的MDN示例适用于Firefox,但不适用于Chrome。

要在Chrome上输出您的示例,您可以做的是将传输变量放在其自己的数组中,以便Chrome打印该表。

console.table([transportation]);

我很抱歉这不是一个非常好的或高级的答案,因为我不确定为什么Chrome有时只为console.table()打印。

很抱歉这个冗长的答案。&#39;这是我的第一篇文章,所以我希望它有所帮助。如果有人知道完整答案,请编辑我的帖子!

答案 1 :(得分:0)

理论上,console.table()打印表(2维)而非数组(1维),因此外部数组是行列表(如<tr> s),每个内部数组包含每列的值该行(如<td> s)。

答案 2 :(得分:0)

只需打开新选项卡并打开控制台,然后键入console.table([['1','2','3']]));并运行它,然后尝试运行您的文件,看看是否可行。但是对我来说却有效!

答案 3 :(得分:-1)

我在阵列有氧运动中遇到了同样的问题(wesbos JS30)。我玩了console.table(有点),后面的步骤帮助了我。

  1. 使用f1运行程序(无论你使用的是什么键,我使用visual studio代码)。
  2. 检查控制台是否运行良好。
  3. 如果不起作用,请刷新当前页面并立即检查控制台。
  4. 我不知道这是如何运作的,但它对我有用。我很高兴,如果这有助于你,如果你找到一些有效的解决方案随时编辑这篇文章