如何以字符串格式显示JavaScript对象的内容,就像我们警告变量时一样?

与显示对象的格式相同。


当前回答

假设对象obj={0:'John',1:'Foo',2:'Bar'}

打印对象的内容

for (var i in obj){
    console.log(obj[i], i);
}

控制台输出(Chrome DevTools):

John 0
Foo 1
Bar 2

希望这有帮助!

其他回答

如果要打印用于调试的对象,请使用以下代码:

var obj = {
  prop1: 'prop1Value',
  prop2: 'prop2Value',
  child: {
    childProp1: 'childProp1Value',
  },
}
console.log(obj)

将显示:

注意:您只能记录对象。例如,这不起作用:

console.log('My object : ' + obj)

注意:您也可以在log方法中使用逗号,然后输出的第一行将是字符串,之后将呈现对象:

console.log('My object: ', obj);

编号:在这些示例中,yourObj定义了要检查的对象。

首先,我最不喜欢但最常用的显示对象的方式:

这是显示对象内容的实际方式

console.log(yourObj)

将产生如下结果:

我认为最好的解决方案是查看对象关键点,然后查看对象值,如果您真的想查看对象的内容。。。

console.log(Object.keys(yourObj));
console.log(Object.values(yourObj));

它将输出如下内容:(上图:存储在对象中的键/值)

如果您使用的是ECMAScript 2016或更高版本,还有一个新选项:

Object.keys(yourObj).forEach(e => console.log(`key=${e}  value=${yourObj[e]}`));

这将产生整洁的输出:前面的回答中提到的解决方案:console.log(yourObj)显示了太多的参数,并且不是显示所需数据的最方便用户的方式。这就是为什么我建议分别记录键和值。

下一步:

console.table(yourObj)

有人在之前的评论中建议过这个,但它从来没有对我起过作用。如果它对其他人在不同的浏览器或其他东西上起作用,那就太好了!我仍将代码放在此处以供参考!将向控制台输出如下内容:

console.dir(对象):

显示指定JavaScript对象的财产的交互式列表。此列表允许您使用公开三角形来检查子对象的内容。

请注意,console.dir()特性是非标准的。查看MDN Web文档

我更喜欢使用console.table来获得清晰的对象格式,所以假设您有这个对象:

const obj = {name: 'Alireza', family: 'Dezfoolian', gender: 'male', netWorth: "$0"};

您将看到一张整洁易读的表格,如下所示:

它在浏览器中不起作用,您可能只需要在您希望获得对象的有效JS表示而不是JSON的情况下使用它。它只运行节点内联求值

var execSync = require('child_process').execSync

const objectToSource = (obj) =>
  execSync('node -e \'console.log(JSON.parse(`' + JSON.stringify(obj) + '`))\'', { encoding: 'utf8' })

console.log(objectToSource({ a: 1 }))