Javascript 如何获取嵌套在另一个对象中的对象的已知属性?

Javascript 如何获取嵌套在另一个对象中的对象的已知属性?,javascript,Javascript,Firebase会自动生成书籍对象的键 { books: { -LKsSspLai8tTppJjSiE: { author: 'Author 1', name: 'Book 1' }, -LKsS15TMhGRQXlZZlkE: { author: 'Author 2', name: 'Book 2' }, {}, {}... } timestamp: 1535579350 } 访问一级属性没有

Firebase会自动生成
书籍
对象的键

{
  books: {
    -LKsSspLai8tTppJjSiE: {
      author: 'Author 1',
      name: 'Book 1'
    },
    -LKsS15TMhGRQXlZZlkE: {
      author: 'Author 2',
      name: 'Book 2'
    },
    {}, {}...
  }
  timestamp: 1535579350
}
访问一级属性没有问题,但是如何从
书籍
对象创建一个数组,以便在
作者
名称
上进一步循环?

您可以使用object.values(书籍),然后在该数组中循环

Object.values(books).forEach( (book) => {
    // now you have book.author and book.name
});

如果要将对象的值转换为数组(如您所要求的),可以使用lodash:

const a={
书籍:{
“-LKSSPLAI8TTPPJJSIE”:{
作者:“作者1”,
书名:‘第一册’
},
“-LKSS15TMHGRQXLZLLKE”:{
作者:“作者2”,
书名:“第二册”
},
},
时间戳:1535579350
}
console.log(u.values(a.books))

你是什么意思?你在找吗?@ibrahimmahrir,我想呈现一个书籍列表,并用这些属性填充它。我尝试了.keys/values/entries和.map/forEach以及for/in循环,但无法获得所需的内容。“我想这会容易得多。”点火器向我们展示你的尝试<代码>对象。值可以很好地用于此操作,因此您肯定缺少其他内容。您正在执行
Object.values(response.books)
?您从firebase获得的
response
是什么?您没有指定最终结果“array”应该是什么样的-对象按原样记录,是完全迭代的/ableNo,您没有
book.author
book.name
book
将是键
“-LKSSPLAI8TTPPJJSIE”
,…这不起作用,Object。键(books)将只返回一个键数组,而不是值。是的,这是正确的。我没有想清楚。感谢您的编辑。但它可能无法在IE浏览器中工作。我建议您使用Object.keys.To展开@jaewowoo的评论,您可以执行
Object.keys(books).map(key=>books[key])
来获取值,而不直接使用Object.values.Javid,我得到了
ReferenceError:那里没有定义图书。应该是普通的方法。我的意思是你的代码沙盒,它给出了一个错误,请检查重新加载/重试,我可能在你加载它时进行了编辑。我认为这是你使用一个4kb的库来做一些内置的事情和链接到第三方网站来显示工作代码的组合。Stackoverflow现在内置了一个小提琴,您可以通过单击其中的图标来访问它。@Igniter-是的,您可以使用Object.values,但有时当您使用本机Javascript对象时,它会给您带来比您所期望的更多的回报(对于这些Firebase对象可能并不重要)。Lodash的优点是轻量级,但也允许您将多个命令链接在一起以获得所需的输出(例如,您可以快速计算出同名人员的数量,或获得按字母顺序排序的唯一作者列表),只需添加一点代码即可。