我有一个案例,我不断遇到我只需要一个对象键 - 而不是整个对象 - 基于同一对象中的另一个键值,所有这些都来自一个对象数组。
例如,如果我有这个对象数组:
var newArray = _.map(myArray, function(item) {
return item.type === 'beta';
});
因此,如果我想获得那些类型为'beta'的对象的名称值,我该怎么做?我更喜欢lodash,我知道如何使用_.map或_.filter,例如
library(ggmap)
lat <- 39.86+rnorm(10,0.5)
lng <- -82.59 + rnorm(10, 0.5)
sightings <- data.frame(cbind(lng,lat))
map<-get_map(location='Ohio', zoom = 6,maptype='hybrid',source="google")
ggmap(map) + geom_point(data=sightings, aes(x=lng,y=lat))
但那些返回整个对象。我怀疑我可以通过链接获得我想要的东西,但我不知道如何做到这一点。
感谢。
答案 0 :(得分:3)
您可以使用原生Array.prototype.map()
执行此操作。它看起来像这样(使用ES6 fat-arrow函数来简洁):
myArray.filter(item => item.type === 'beta').map(item => item.name)
ES5表格是:
myArray.filter(function(item) {return item.type === 'beta'})
.map(function(item) {return item.name})
答案 1 :(得分:2)
var result = _(myArray).filter({ type: 'beta' }).map('name').value();
var myArray = [
{
name: 'Person 1',
type: 'alpha'
},
{
name: 'Person 2',
type: 'beta'
},
{
name: 'Person 3',
type: 'gamma'
},
{
name: 'Person 4',
type: 'beta'
},
{
name: 'Person 5',
type: 'gamma'
},
];
var result = _(myArray).filter({ type: 'beta' }).map('name').value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
答案 2 :(得分:1)
您可以使用filter
方法返回'beta'
类型的项目,然后使用map
方法仅返回每个对象的item.name
:
myArray.
filter(function(item){ return item.type === 'beta'; }).
map(function(item){ return item.name; });
答案 3 :(得分:1)
带参数解构的ES6:
myArray.filter(({type}) => type === 'beta').map(({name}) => name)