console.log显示数组对象的内容

时间:2011-10-27 06:56:03

标签: javascript arrays alert

我尝试使用console.log,因此我可以看到包含多个对象的数组内容。但是我得到一个错误,说console.log不是对象等。我正在使用jquery 1.6.2,我的数组是这样的:

filters = {dvals:[{'brand':'1', 'count':'1'},
                  {'brand':'2', 'count':'2'}, 
                  {'brand':'3', 'count':'3'}]}

console.log(filters);

我想要做的是将array(filters)的内容写入过滤器格式的警告框(这是我认为console.log所做的)。我该怎么做?

7 个答案:

答案 0 :(得分:50)

将数组转换为字符串有两种可能的简单解决方案。取决于您正在使用的环境:

...现代浏览器使用JSON:

JSON.stringify(filters);
// returns this
"{"dvals":[{"brand":"1","count":"1"},{"brand":"2","count":"2"},{"brand":"3","count":"3"}]}"

...使用类似node.js的东西,你可以使用console.info()

console.info(filters);
// will output:
{ dvals: 
[ { brand: '1', count: '1' },
  { brand: '2', count: '2' },
  { brand: '3', count: '3' } ] }

修改:

JSON.stringify附带了两个可选参数。第三个“spaces”参数可以实现漂亮的打印:

JSON.stringify(
                obj,      // the object to stringify
                replacer, // a function or array transforming the result
                spaces    // prettyprint indentation spaces
              )

示例:

JSON.stringify(filters, null, "  ");
// returns this
"{
 "dvals": [
  {
   "brand": "1",
   "count": "1"
  },
  {
   "brand": "2",
   "count": "2"
  },
  {
   "brand": "3",
   "count": "3"
  }
 ]
}"

答案 1 :(得分:7)

console.log不会生成任何消息框。如果没有添加萤火虫或一些等价物,我认为它不适用于任何版本的IE(也不是Firefox)。

然而,它可以在Safari和Chrome中使用。自从你提到Chrome后我会将其用作我的例子。

您需要打开窗口及其开发者窗口。您可以通过右键单击页面上的任何元素并选择“Inspect element”来完成此操作。您的窗口将分为两部分,开发人员部分是底部。在两个部分之间的划分是带按钮的条形图,最右边的按钮标有“控制台”。您需要单击它以切换到控制台选项卡。不幸的是,我不知道怎么用铬键盘到达那里。 (在Mac OS X上的Safari中,命令+ shift + I)

在那里,您将能够通过该控制台的javascript与顶部加载的任何页面进行交互,并且console.log将在那里显示任何消息。

答案 2 :(得分:4)

Internet Explorer 8 或更高版本中提供了console对象,但前提是您按 F12 或通过菜单打开“开发人员工具”窗口。

即使您再次关闭“开发者工具”窗口,它也会保持可用状态。

至少在当前版本中,Chorme和Opera总是有console可用。 Firefox在使用Firebug时有console,但它也可以提供没有Firebug的。{/ p>

无论如何,这是一种使用console输出可选的保存方法。以下是有关如何执行此操作的一些示例:

if (console) {
    console.log('Hello World!');
}

if (console) console.debug('value of someVar: ' + someVar);

答案 3 :(得分:4)

在Javascript中将对象打印到控制台很简单。只需使用以下语法:

console.log( object );

console.log('object: %O', object);

以下是一种相对未知的方法,它将对象或数组作为表格打印到控制台:

  

console.table(object);

我认为重要的是要说这种日志语句只能在浏览器环境中运行。我在谷歌浏览器中使用过它。您可以在Developer Console中观看console.log调用的输出:右键单击网页中的任何元素打开它,然后选择“检查”。选择标签'控制台'。

答案 4 :(得分:1)

似乎像Firebug或您使用的任何调试器,未正确初始化。当您尝试访问console.log() - 方法时,您确定Firebug已完全初始化吗?检查Console-Tab(如果已设置为激活)。

另一种可能性是,你自己在代码中的任何地方覆盖console-Object。

答案 5 :(得分:1)

Json代表JavaScript Object Notation,所有json都是javascript对象,所以你的数组已经是json形式。要在div中写出来,你可以做一些我认为最简单的事情:

 objectDiv.innerHTML = filter;

其中objectDiv是您想要使用jquery从DOM中选择的div。如果你想列出数组的部分,你可以访问它们,因为它是一个像这样的javascript对象:

 objectDiv.innerHTML = filter.dvals.valueToDisplay; //brand or count depending.

编辑:你想成为一个字符串,但目前不是(这是罕见的javascript几乎把所有东西都当作字符串)只需使用内置的toString()函数。所以如果你需要它就行{ {1}}

第二次编辑澄清:这个答案是对OP的评论的回应而不完全是他原来的问题。

答案 6 :(得分:1)

我热烈推荐这个代码段,以确保在客户端浏览器上不会出现意外遗留的代码:

/* neutralize absence of firebug */
if ((typeof console) !== 'object' || (typeof console.info) !== 'function') {
    window.console = {};
    window.console.info = window.console.log = window.console.warn = function(msg) {};
    window.console.trace = window.console.error = window.console.assert = function(msg) {};
}

而不是定义一个空函数,这个代码片段也是一个很好的起点,可以根据需要滚动你自己的控制台代理,即将这些信息转储到.debug容器中,显示警报(可以获得充足)或者...... < / p>

如果您使用firefox + firebug,console.dir()最适合转储数组输出see here