如何访问嵌套javascript数组中的特定字段



我正在努力理解如何访问嵌套数组中的特定值。数据结构如下:

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,spreadArray.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)

最新更新