Javascript如何获取对象属性的属性

时间:2019-06-27 04:25:49

标签: javascript

我正在尝试显示对象的属性。属性之一是对象。

/*IE7-*/ filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#0c93c0', endColorStr='#FFFFFF', GradientType=0);
/*IE8+*/ -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(startColorStr='#0c93c0', endColorStr='#FFFFFF', GradientType=0)";

当我使用循环来显示属性和值时,名为“ comments”的对象属性仅显示: '注释[object object]'

但是我想显示为: '评论 作者:价值 身体:一些身体'

4 个答案:

答案 0 :(得分:2)

  1. 您需要检查typeof blog[key](值)而不是typeof key(键)。

  2. 您需要写blog[key][key2]的{​​{1}}。

  3. 更适合使用:key[key2],因为blog[key].toString() !== "[object Object]"DateArray也是null

Object

答案 1 :(得分:1)

您要在此处将对象强制为字符串

console.log(key + ': ' + blog[key]);

这就是为什么打印comment [object object]

的原因

let myBlog = {
  title: 'My First Blog',
  body: 'This is the first article that blah lorem lorem lorem blah',
  author: 'Koko Bleh Bleh',
  views: 0,
  comments: {
    author: 'TheLegend27',
    body: 'The legendary commentator'
  },
  isLive: false
};

function showBlog(blog) {
  for (let key in blog) {

    if (typeof key !== 'object') {
      console.log(key + ': ', blog[key]);
    } else {
      console.log(key);
      for (let key2 in key) {
        console.log(key2 + ': ', key[key2]);
      }
    }

  }
}
showBlog(myBlog)

答案 2 :(得分:1)

总结我的评论...

  1. 您的else条件永远不会运行,因为key总是字符串。您可能是说if (typeof blog[key] !== 'object')
  2. 由于key是字符串,因此for (let key2 in key)key[key2]并不是您想要的。您可能是说blog[key]。但是如何使用递归... else { showBlog(blog[key]) }

let myBlog = {
    title: 'My First Blog',
    body: 'This is the first article that blah lorem lorem lorem blah',
    author: 'Koko Bleh Bleh',
    views: 0,
    comments: {
        author: 'TheLegend27',
        body: 'The legendary commentator'
    },
    isLive: false
};

function showBlog(blog)
{
    for(let key in blog)
    {

        if( typeof blog[key] !== 'object')
        {
            console.log(key + ': ' + blog[key]);
        }
        else
        {
            console.log(key);
            showBlog(blog[key]) // recursively call
        }
    }
}

showBlog(myBlog)

答案 3 :(得分:0)

我们可以使用这样的简单代码,结果类似

title:我的第一个博客

body:这是blaem lorem lorem lorem blah的第一篇文章

作者:Koko Bleh Bleh

观看次数:0

评论作者:TheLegend27

评论正文:传奇的评论员

isLive:错误

function displayObjectValues(myObj, parentObjKey = '') {
    for (let [key, value] of Object.entries(myObj)) {
        if (typeof value == 'object') {
            displayObjectValues(value, key);
        } else {
            console.log(`${parentObjKey} ${key} : ${value}`);
        }
    }
}