首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历object,其中Value是对象数组,并从对象数组的每个对象返回一个值

遍历object,其中Value是对象数组,并从对象数组的每个对象返回一个值
EN

Stack Overflow用户
提问于 2019-12-13 00:11:30
回答 3查看 84关注 0票数 1

如何从中获取所有的office值并将其存储为一个简单的数组?

代码语言:javascript
复制
var data = {
  'XYZ': [{
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'processed',
      timestamp: '02-12-2019 00:15:32'
    }
  ],
  'yyy': [{
      office: 'yyy.in',
      reportName: 'payroll',
      event: 'delivered',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'yyy.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:32'
    }
  ],
  'zzz': [{
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'delivered',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:32'
    }
  ]
}

输出应如下所示:

代码语言:javascript
复制
officesArray = ['xyz.in', 'yyy.in', 'xyz.in']

我的代码是

代码语言:javascript
复制
var Office = (Object.entries(grpDatas).flatMap(([k, v]) => (v.forEach(({office})=> office))))

它打印array of undefined

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-13 00:17:24

使用map而不是forEach,也就是访问email而不是office

代码语言:javascript
复制
var data = {
  'XYZ': [{
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'processed',
      timestamp: '02-12-2019 00:15:32'
    }
  ],
  'yyy': [{
      office: 'yyy.in',
      reportName: 'payroll',
      event: 'delivered',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'yyy.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:32'
    }
  ],
  'zzz': [{
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'delivered',
      timestamp: '02-12-2019 00:15:29'
    },
    {
      office: 'xyz.in',
      reportName: 'payroll',
      event: 'open',
      timestamp: '02-12-2019 00:15:32'
    }
  ]
}

var Email = Object.values(data).flatMap(item => [...new Set(item.map(({office})=> office))])
console.log(Email)

票数 2
EN

Stack Overflow用户

发布于 2019-12-13 00:23:50

您可以从想要的属性中获得唯一的值。

代码语言:javascript
复制
var data = { XYZ: [{ office: 'xyz.in', reportName: 'payroll', event: 'open', timestamp: '02-12-2019 00:15:29' }, { office: 'xyz.in', reportName: 'payroll', event: 'processed', timestamp: '02-12-2019 00:15:32' }], yyy: [{ office: 'yyy.in', reportName: 'payroll', event: 'delivered', timestamp: '02-12-2019 00:15:29' }, { office: 'yyy.in', reportName: 'payroll', event: 'open', timestamp: '02-12-2019 00:15:32' }], zzz: [{ office: 'xyz.in', reportName: 'payroll', event: 'delivered', timestamp: '02-12-2019 00:15:29' }, { office: 'xyz.in', reportName: 'payroll', event: 'open', timestamp: '02-12-2019 00:15:32' }] },
    office = Object.values(data).flatMap(v => [...new Set(v.map(({ office }) => office))]);

console.log(office);

票数 0
EN

Stack Overflow用户

发布于 2019-12-13 00:53:11

const result = Object.keys(data) .map( key => data[key]) .flat() .map( element => element.office)

将所有内容转换为数组并对其进行扁平化非常有帮助!

https://codepen.io/t0dorakis/pen/MWYerKL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59308668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档