JavaScript代码挑战#4

// 编程挑战 #4
/* 朱莉亚和凯特仍在研究狗,这次她们研究的是狗是否吃得太多或太少。 吃得太多意味着狗当前的食物份量比推荐份量大,吃得太少则相反。 吃得适量意味着狗当前的食物份量在推荐份量的正负 10% 的范围内(参见提示)。

  1. 循环遍历包含狗对象的数组,并为每只狗计算推荐的食物份量并将其添加为新属性到对象中。不要创建新数组,只需循环遍历数组。公式:recommendedFood = weight ** 0.75 * 28。(结果以食物克数表示,体重需以千克为单位)
  2. 找到莎拉的狗,并将其是否吃得太多或太少记录到控制台。提示:一些狗有多个主人,因此您首先需要在所有者数组中找到莎拉,这有点棘手(故意的)🤓
  3. 创建一个包含所有吃得太多的狗主人的数组(‘ownersEatTooMuch’),并创建一个包含所有吃得太少的狗主人的数组(‘ownersEatTooLittle’)。
  4. 为第 3 步中创建的每个数组向控制台记录一条字符串,格式如下:“Matilda and Alice and Bob’s dogs eat too much!” 和 “Sarah and John and Michael’s dogs eat too little!”
  5. 向控制台记录是否有任何狗正好吃了推荐量的食物(仅 true 或 false)
  6. 向控制台记录是否有任何狗吃了适量的食物(仅 true 或 false)
  7. 创建一个包含吃得适量食物的狗的数组(尝试重用第 6 步中使用的条件)。
  8. 创建一个狗数组的浅拷贝,并按推荐食物份量升序排序(请记住食物份量在数组对象内部)。
    提示 1:使用多种不同的工具来解决这些挑战,您可以使用总结讲座来选择其中之一😉 提示 2:在推荐份量的正负 10% 范围内意味着:current > (recommended * 0.90) && current < (recommended * 1.10)。基本上,当前份量应在推荐份量的 90% 到 110% 之间。
    测试数据:
    const dogs = [ { weight: 22, curFood: 250, owners: [‘Alice’, ‘Bob’] }, { weight: 8, curFood: 200, owners: [‘Matilda’] }, { weight: 13, curFood: 275, owners: [‘Sarah’, ‘John’] }, { weight: 32, curFood: 340, owners: [‘Michael’] } ];

祝你好运😀 */

第一题

dogs.forEach(dog => (dog.recFood = Math.trunc(dog.weight ** 0.75 * 28)));

console.log(dogs);

在这里插入图片描述

第二题

const dogSarah = dogs.find(dog => dog.owners.includes('Sarah'));

console.log(dogSarah);
console.log(
  `Sarah 目前吃的量为${
    dogSarah.curFood > dogSarah.recFood ? '吃的太多了' : '吃的太少了'
  }}`
);

在这里插入图片描述

第三题

const ownersEatTooMuch = dogs
  .filter(dog => dog.curFood > dog.recFood)
  .flatMap(dog => dog.owners);
console.log(ownersEatTooMuch);

const ownersEatTooLittle = dogs
  .filter(dog => dog.curFood < dog.recFood)
  .flatMap(dog => dog.owners);
console.log(ownersEatTooLittle);

在这里插入图片描述

第四题

console.log(`${ownersEatTooMuch.join(' and ')}'s dogs eat too much!`);
console.log(`${ownersEatTooLittle.join(' and ')}'s dogs eat too little!`);

在这里插入图片描述

第五题

console.log(dogs.some(dog => dog.curFood === dog.recFood));

在这里插入图片描述

第六题

console.log(
  dogs.some(
    dog => dog.curFood > dog.recFood * 0.9 && dog.curFood < dog.recFood * 1.1
  )
);

在这里插入图片描述

第七题

console.log(dogs.filter(tuijian));

在这里插入图片描述

第八题

const dogsCopy = dogs.slice().sort((a, b) => a.recFood - b.recFood);
console.log(dogsCopy);

在这里插入图片描述

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值