首页 > 解决方案 > 如何使用没有键对的对象访问属性的值?

问题描述

我正在使用 dynamoose,查询返回以下输出

  [ Document { cost: 100 },
  lastKey: undefined,
  count: 1,
  queriedCount: undefined,
  timesQueried: 1 ]

当我尝试做时typeof(output),它会返回Object

当我尝试做时Object.keys(output),它会返回[ '0', 'lastKey', 'count', 'queriedCount', 'timesQueried' ]

当我这样做时Object.entries(output),它会返回[ [ '0', Document { cost: 100 } ],[ 'lastKey', undefined ], [ 'count', 1 ], [ 'queriedCount', undefined ], [ 'timesQueried', 1 ] ]

为了我的使用,我需要一个看起来像这样的对象,{cost: 100}目前我正在使用

JSON.parse(JSON.stringify(output))

这给了我

[ { cost: 100 } ]

我还没有遇到没有键值对的对象(我是自学的),所以我不知道如何解决这个问题。目前的方法似乎效率低下而且有点错误。请告诉我如何以正确的方式做到这一点

标签: javascriptnode.jstypescriptdynamoose

解决方案


JSON.stringify(output) //=> "[ { cost: 100 } ]"

这意味着您有一个包含一个项目的数组(由 表示),它是一个具有单个 key[]的对象(由 表示) 。{}cost

用于[0]获取数组中的第一项,然后用于.cost获取成本属性。

console.log(output[0].cost) //=> 100

您在该数组上看到其他键的原因是,看起来 dynamoose 库在返回数组之前正在向数组添加一些额外的属性。它相当于:

// vanilla js, not typescript
const output = [ { cost: 100 } ]
output.count = 1
output.timesQueried = 1

除了内容之外,这还提供了数组属性。dynamoose 库似乎使用此方法将有关查询的元数据与返回的数据一起编码。

数组的默认 JSON 序列化策略不序列化自定义数组属性,仅序列化数组成员。


推荐阅读