【发布时间】:2018-08-21 12:42:24
【问题描述】:
我有一个对象:
const animals = [
{name: 'Fluffy', species: 'cat'},
{name: 'Crinkle', species: 'rabbit'},
{name: 'Wally', species: 'dog'},
{name: 'Roo', species: 'dog'},
{name: 'Felix', species: 'cat'},
]
我想使用更高阶的函数,例如 filter() 方法来获取动物对象的数组并返回一个仅包含所有狗名称的数组,即["Wally", "Roo"]。我的代码目前返回一个数组,其中包含整个对象以及其中的物种狗。见下文:
const dogArray = animals.filter(function(animal) {
return animal.species === 'dog';
})
return dogArray;
// returns
// [{name: "Wally", species: "dog"},
// { name: "Roo", species: "dog"}]
【问题讨论】:
-
在这里使用
reduce会很有效,因为您在同一个数组上进行过滤和映射。 -
是的,
filter就是这样工作的。您还需要map该结果。您可以使用reduce将这两个操作组合到同一个迭代中。 -
这是一个合法的问题并且格式正确(嗯,第一个代码块中的缩进会有所帮助)。不知道你为什么投了反对票。
标签: javascript arrays object higher-order-functions