当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么console.table()不适用于所有对象/数组?》经验,为你挑选了1个好方法。

为什么不适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()返回这样的东西:

MDN示例

...除了(索引)列包含汽车,卡车,自行车等,并且"值"列将包含计数.

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

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

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

谢谢.



1> 小智..:

我目前正在为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()打印.

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

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有