我是javascript新手,遇到这样的问题。
例如。有这样一个列表变量
{
name: 'x',
attack: 50,
speed: 100,
hitpoint: 100,
},
{
name: 'y',
attack: 150,
speed: 80,
hitpoint: 180,
}
查找攻击值为150的变量,并将其返回到函数"findAMonsterByAttack"如果变量列表中没有匹配的变量,则使用"findamonsterbyattack"函数返回null
下面是我的代码:function findAMonsterByAttack(monsters) {
var monsters = [
{
name: 'x',
attack: 50,
speed: 100,
hitpoint: 100,
},
{
name: 'y',
attack: 150,
speed: 80,
hitpoint: 180,
},
// ...
];
var isfree = monsters.every(function(course, index) {
return course.attack ===150;
});
我的想法是使用代码每检查课程和索引,然后返回如果attach = 150。但是我失败了。你能帮我拿这个箱子吗?非常感谢您的宝贵时间。
如果monsters
是数组,则可以使用array。过滤器返回另一个数组,其中仅包含符合匹配条件的monsters
。
egattack === 150
.
请注意,可以有多个匹配,因此这将返回一个包含所有匹配的monsters
的数组,(或者如果没有monsters
匹配则返回一个空数组)。
const monsters = [{
name: 'x',
attack: 50,
speed: 100,
hitpoint: 100,
},
{
name: 'y',
attack: 150,
speed: 80,
hitpoint: 180,
},
{
name: 'z',
attack: 150,
speed: 90,
hitpoint: 150,
}
]
const a150 = monsters.filter(m => m.attack === 150)
console.log(a150)
如果您只关心一个monster
,您也可以使用array.find。但是这将返回第一个找到的monster
和如果没有找到匹配的undefined
。
const monsters = [{
name: 'x',
attack: 50,
speed: 100,
hitpoint: 100,
},
{
name: 'y',
attack: 150,
speed: 80,
hitpoint: 180,
},
{
name: 'z',
attack: 150,
speed: 90,
hitpoint: 150,
}
]
const a150 = monsters.find(m => m.attack === 150)
console.log(a150)
注意:数组。every测试所有monsters
是否满足条件并返回Boolean
值。在您的示例中,这将返回false
,因为所有monsters
不的攻击值为150。
这是你想要的吗?
function findAMonsterByAttack() {
var monsters = [
{
name: 'x',
attack: 50,
speed: 100,
hitpoint: 100,
},
{
name: 'y',
attack: 150,
speed: 80,
hitpoint: 180,
}
// ...
];
for ( m of monsters ) {
if ( m.attack == 150 )
return m
}
return "Monster with attack 150 not found"
}
console.log(findAMonsterByAttack())