Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此函数返回数组中的所有对象?_Javascript - Fatal编程技术网

Javascript 为什么此函数返回数组中的所有对象?

Javascript 为什么此函数返回数组中的所有对象?,javascript,Javascript,我试图将参数名从getAnimalByName函数传递到嵌套在其中的函数的返回值。为什么它不能正常工作?现在,如果我调用getAnimalByName,它将返回animals数组中的所有对象,而不仅仅是作为参数传递的对象 var animals=[ {type: 'mammal', subType: 'dog', name: 'spot', weight: 50}, {type: 'reptile', subType: 'lizard', name: 'gicko', weight: 1

我试图将参数名从getAnimalByName函数传递到嵌套在其中的函数的返回值。为什么它不能正常工作?现在,如果我调用getAnimalByName,它将返回animals数组中的所有对象,而不仅仅是作为参数传递的对象

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');

数组#过滤器
处理程序函数(
回调
)中缺少条件

var动物=[{
类型:'哺乳动物',
子类型:“狗”,
名称:'点',
体重:50
}, {
类型:“爬行动物”,
亚型:“蜥蜴”,
姓名:'gicko',
体重:1
}, {
类型:“爬行动物”,
子类型:“蛇”,
姓名:'布巴',
体重:3
}, {
类型:'哺乳动物',
亚型:'鼠',
姓名:'跑步者',
体重:3
}];
函数getAnimalByName(名称){
返回动物。过滤器(功能(事件){
return event.name==name;//此处测试参数值!
});
}
var spot=getAnimalByName('spot');
var gicko=getAnimalByName('gicko');
var buba=getAnimalByName('buba');
var runner=getAnimalByName('runner');
控制台日志(spot);
控制台日志(gicko);
控制台日志(buba);

console.log(runner)您在
数组#过滤器
处理程序函数(
回调
)中缺少条件

var动物=[{
类型:'哺乳动物',
子类型:“狗”,
名称:'点',
体重:50
}, {
类型:“爬行动物”,
亚型:“蜥蜴”,
姓名:'gicko',
体重:1
}, {
类型:“爬行动物”,
子类型:“蛇”,
姓名:'布巴',
体重:3
}, {
类型:'哺乳动物',
亚型:'鼠',
姓名:'跑步者',
体重:3
}];
函数getAnimalByName(名称){
返回动物。过滤器(功能(事件){
return event.name==name;//此处测试参数值!
});
}
var spot=getAnimalByName('spot');
var gicko=getAnimalByName('gicko');
var buba=getAnimalByName('buba');
var runner=getAnimalByName('runner');
控制台日志(spot);
控制台日志(gicko);
控制台日志(buba);

console.log(runner)
过滤器的工作方式是在我们需要指定的函数中,无论该特定数组元素是否匹配特定条件,因此,过滤器函数在内部除了一个
truthy
或一个
falsy
值,并且由于您返回了
event.name
,它将始终是一个
truthy
值,然后,它将值推送到一个新数组中,因此它返回了整个animals数组

这就是你应该回来的原因

return event.name===name

过滤器的工作方式是在我们需要指定的函数中,无论特定数组元素是否匹配特定条件,因此,在内部,过滤器函数将排除
truthy
falsy
值,并且由于您返回了
event.name
,它将始终是
truthy
值,然后,它将值推送到一个新数组中,因此它返回了整个animals数组

这就是你应该回来的原因

return event.name===name