javascript - lodash:从对象数组中获取对象值

标签 javascript lodash

我有一个如下所示的对象数组。数组中的每个对象都有一个 instructors 字段,它也是一个数组。如何通过 lodash 从这个对象数组中获取所有电子邮件字段?

我需要使用双 _.map 函数吗?我可以在对象中运行一个 foreach,然后在讲师中运行另一个 foreach,但我认为这不是很优雅。我无法全神贯注地从包含其他数组字段的对象数组中获取值。任何帮助将不胜感激。

[
{
    'title': 'New Class',
    'instructors': [
        {
            'email': 'someemail@gmail.com'
        },
        {
            'email': 'anotheremail@gmail.com'
        }    
    ]
},
{
    'title': 'New Class 2',
    'instructors': [
        {
            'email': 'someemail@gmail.com'
        },
        {
            'email': 'anotheremail@gmail.com'
        }    
    ]
}    

];

最佳答案

Do I need to use a double _.map function?

这是一个解决方案。你相信你在找flatMap :

var classes = [{
  'title': 'New Class',
  'instructors': [{
    'email': 'someemail@gmail.com'
  }, {
    'email': 'anotheremail@gmail.com'
  }]
}, {
  'title': 'New Class 2',
  'instructors': [{
    'email': 'someemail@gmail.com'
  }, {
    'email': 'anotheremail@gmail.com'
  }]
}];

var emails = _.flatMap(classes, function(cls) {
  return _.map(cls.instructors, 'email');
});

document.querySelector('#out').innerHTML = JSON.stringify(emails, null, 4);
<script src="https://cdn.jsdelivr.net/lodash/4.6.1/lodash.min.js"></script>
<pre id="out"></pre>

关于javascript - lodash:从对象数组中获取对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289103/

相关文章:

javascript - 如何在客户端 Javascript 中创建文件对象进行单元测试?

javascript - 如何通过混合应用程序的 jquery 在 IOS 6.0(Iphone)中关闭选择器 onchange 事件的下拉菜单

javascript - 将视频流/图像发送到 websocket 服务器

javascript - 使用 lodash 从数组中返回对象键和值

javascript - 具有嵌套空值的 Lodash/JS orderBy

arrays - 使用 lodash 按值(整数)对数组进行排序

javascript - 为什么我需要 setTimeout.bind(window)

javascript - D3.js 强制布局突出显示,无需单击或悬停

javascript - 函数式编程 : Return first truthy result of calling a list of different functions with a specific argument

javascript - 如何合并具有相同名称的 JSON 对象