Javascript lodash:从对象数组中获取对象值
我有一个如下所示的对象数组。数组中的每个对象都有一个Javascript lodash:从对象数组中获取对象值,javascript,lodash,Javascript,Lodash,我有一个如下所示的对象数组。数组中的每个对象都有一个讲师字段,该字段也是一个数组。如何通过lodash从该对象数组获取所有电子邮件字段 我需要使用双映射函数吗?我可以在对象中运行一个foreach,然后在讲师中运行另一个foreach,但我认为这不是很优雅。我无法从包含其他数组字段的对象数组中获取值。任何帮助都将不胜感激 [ { 'title': 'New Class', 'instructors': [ { 'email': 'somee
讲师
字段,该字段也是一个数组。如何通过lodash从该对象数组获取所有电子邮件字段
我需要使用双映射函数吗?我可以在对象中运行一个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'
}
]
}
]) 这应该有效:
var allEmails = [];
_.each(myArray, function(obj) {
_.each(obj.instructors, function(instructor) {
allEmails.push(instructor.email);
}, this);
}, this);
return allEmails;
使用.reduce
和.map
的更优雅的解决方案是:
_.reduce(myArray, function(result, value, key) {
return result.concat(_.map(value.instructors, 'email'));
}, []);
编辑:.pluck
由于v4.x已不推荐使用,请改用.map
。这应该可以:
var allEmails = [];
_.each(myArray, function(obj) {
_.each(obj.instructors, function(instructor) {
allEmails.push(instructor.email);
}, this);
}, this);
return allEmails;
使用.reduce
和.map
的更优雅的解决方案是:
_.reduce(myArray, function(result, value, key) {
return result.concat(_.map(value.instructors, 'email'));
}, []);
编辑:.pluck
由于v4.x已不推荐使用,请改用\uuu0.map
我需要使用双映射函数吗
这是一个解决方案。您认为您正在寻找:
var类=[{
“标题”:“新类”,
‘导师’:[{
“电子邮件”:someemail@gmail.com'
}, {
“电子邮件”:anotheremail@gmail.com'
}]
}, {
“标题”:“新类别2”,
‘导师’:[{
“电子邮件”:someemail@gmail.com'
}, {
“电子邮件”:anotheremail@gmail.com'
}]
}];
var emails=uu.flatMap(类、函数(cls)){
返回地图(cls.instructors,“电子邮件”);
});
document.querySelector('#out').innerHTML=JSON.stringify(emails,null,4)代码>
我需要使用双映射函数吗
这是一个解决方案。您认为您正在寻找:
var类=[{
“标题”:“新类”,
‘导师’:[{
“电子邮件”:someemail@gmail.com'
}, {
“电子邮件”:anotheremail@gmail.com'
}]
}, {
“标题”:“新类别2”,
‘导师’:[{
“电子邮件”:someemail@gmail.com'
}, {
“电子邮件”:anotheremail@gmail.com'
}]
}];
var emails=uu.flatMap(类、函数(cls)){
返回地图(cls.instructors,“电子邮件”);
});
document.querySelector('#out').innerHTML=JSON.stringify(emails,null,4)代码>
所以你知道,普通方法也很简单:
var out = arr.reduce(function (p, c) {
return p.concat(c.instructors.map(function (instructor) {
return instructor.email;
}));
}, []);
所以你知道,普通的方法也很简单:
var out = arr.reduce(function (p, c) {
return p.concat(c.instructors.map(function (instructor) {
return instructor.email;
}));
}, []);
很好的解决方案,我们经常使用lodash方法,而不考虑本地,直到IE9@deKajoo,我想你的意思是“来自IE9”:)很好的解决方案,我们过度使用lodash的方式,往往没有考虑本地的、兼容的,直到IE9@deKajoo,我想你的意思是“来自IE9”: