我正在尝试将参数名称从 getAnimalByName 函数传递到嵌套在其中的函数的返回值。为什么它不能正常工作?现在,如果我调用 getAnimalByName,它将返回动物数组中的所有对象,而不仅仅是作为参数传递的对象。
var animals=[
{type: 'mammal', subType: 'dog', name: 'spot', weight: 50},
{type: 'reptile', subType: 'lizard', name: 'gicko', weight: 1},
{type: 'reptile', subtype: 'snake', name: 'buba', weight: 3},
{type: 'mammal', subType: 'rat', name: 'runner', weight: 3}
];
function getAnimalByName(name){
var animal= animals.filter(function(event){
return event.name;
});
return animal;
}
var spot= getAnimalByName('spot');
var gicko= getAnimalByName('gicko');
var buba= getAimalsByName('buba');
var runner= getAnimalByName('runner');
最佳答案
过滤器的工作方式是在我们需要指定的函数内,特定的数组元素是否匹配特定的条件,因此,过滤器函数在内部除了 truthy
或 falsy
值,并且由于您返回了 event.name
,它将始终是一个 truthy
值,并且它将值插入一个新数组,因此它返回了整个动物数组。
这就是你应该回来的原因
return event.name === 名称
关于javascript - 为什么这个函数返回数组中的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654387/