JavaScript проходит через два массива - PullRequest
0 голосов
/ 19 сентября 2018

Есть два массива:

let cats = [];
var biscuits = [];

, где я добавляю элементы с .push, например, у меня будет:

cats = ["Andy", "Bandy", "Candy", "Dandy"]
biscuits = 14;

Какую функцию написать, чтобы иметь отчето том, сколько печенья получил каждый кот, учитывая, что я начну кормить его с первого кота в массиве:

Andy got 4 biscuits
Bandy got 4 biscuits
Candy got 3 biscuits
Dandy got 3 biscuits

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Хочешь что-нибудь подобное?

const biscuitsPerCat = (cats, biscuits) => {
  const share = Math.floor(biscuits / cats.length)
  const cutoff = biscuits - cats.length * share
  return cats.reduce((res, cat, idx) => ({...res, [cat]: idx < cutoff ? share + 1 : share}), {})
}

console.log(biscuitsPerCat(["Andy", "Bandy", "Candy", "Dandy"], 14))

... которые вы могли бы затем использовать для форматирования вывода?

0 голосов
/ 19 сентября 2018

Вы можете взять мощность Math.floor и оператор напоминания % для нужного количества печенья.

var cats = ["Andy", "Bandy", "Candy", "Dandy"],
    biscuits = 14;

cats.forEach((v, i, { length }) => 
    console.log(`${v} got ${Math.floor(biscuits / length) + (biscuits % length > i)} biscuits`));
...