为什么不适console.table()
用于所有对象/数组?
通过一些数据,我可以在开发人员控制台中获得格式良好的表格.有了其他数据,我什么都没得到......甚至没有错误信息.
我刚刚console.table()
经历了#Javascript30的挑战时学到了什么.演示者使用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);
Look at the console!
我期望console.table()
返回这样的东西:
...除了(索引)列包含汽车,卡车,自行车等,并且"值"列将包含计数.
更新:显然console.table()
无法使用SO的代码片段...在这种情况下意味着它与浏览器的工作方式完全相同:P所以,我在CodePen上发布了一个问题示例: http:// codepen. IO/VAggrippino /笔/ qRraEP
这是第四个挑战,Array Cardio 1对于那些跟随你的人.
我意识到这不是一个严格的编程/ Javascript问题,因为控制台是浏览器的一个功能,而不是语言或DOM.我相信它是相关的,因为浏览器是所有Web开发人员使用的基本工具,并且每个主要浏览器都支持它.
谢谢.
我目前正在为JS30进行相同的练习并遇到了和你一样的问题,这引出了我的兴趣.
我咨询了MDN上的console.table()页面,经过一些测试后,看起来这可能是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()打印.
很抱歉这个冗长的回答.这是我的第一篇文章,所以我希望它有所帮助.如果有人知道完整答案,请编辑我的帖子!