我正在努力理解如何访问嵌套数组中的特定值。数据结构如下:
var data = [{id: "Game 1", count:[{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 2", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 3", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 4", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] }]
数组中count和rank键下都是带有日期和度量值的字典,因此进一步看,它看起来像这样:
[{date: "2017-01-01", metric: 100},
{date: "2018-01-01", metric: 90]...}]
我的问题是如何直接访问日期和度量字段?
可以将Array.map
,spread
和Array.flat
组合使用,如下所示:
const datevalues = "2017-01-01";
const values = 1;
var data = [{id: "Game 1", count:[{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 2", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 3", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] },
{id: "Game 4", count: [{date: datevalues, metric: values}] , rank: [{date: datevalues, metric: values}] }]
const mapped = data.map(r=> [...r.count,...r.rank]).flat()
const mappedWithIds = data.map(r=> [...r.count.map(q=> ({id:r.id,...q})),
...r.rank.map(q=> ({id:r.id,...q}))])
.flat()
console.log(mapped)
console.log(mappedWithIds)
你需要有游戏的id。然后通过获取计数列表&rank做一个映射,从中获取所有的值。
const dates = data.filter(x => x.id)[0].count.map(x => x.date)
const metrics = data.filter(x => x.id)[0].count.map(x => x.metric)