Достаточно

Мой вариант через reduce :)

let getDiet = (calorios, limit, arr=[]) =>{
calorios.reduce((a,b,i)=>(a+b>limit)?arr.push(i):a+b);
return arr[0]}

моё решение:

var getDiet = function (callories, limCallories) {
var limit = callories.length - 1;
var numberDishes = 0;
for (var i = 0; i <= limit; i++) {
numberDishes += callories[i];
if (numberDishes > limCallories) {
limit = i;
}
}
return i - 1;
}

Без условий. И без “-1”.
var getDiet = function(calories, limitCaloriesDays) {
var sumCalories = 0;
var total = 0;
for (var i = 0; sumCalories + calories[i] <= limitCaloriesDays; i++) {
sumCalories += calories[i];
total++;
}
return total;
}

var totalCalories = 0;
var limitArr = [];

var getDiet = function(calories, limit) {
for (var i = 0; i <= calories.length - 1; i++) {
if(totalCalories + calories[i] <= limit){
totalCalories += calories[i];
limitArr.push(calories[i]);} else {
break}
}
return limitArr.length;
}

 var getDiet = function (call,minCall) {
  var sumCall = 0;
  for (var i = 0; i <= call.length - 1; i++) {
    console.log(i);
  if (sumCall < minCall) {
      sumCall += call[i];
       console.log(sumCall);
    }else{
      if (sumCall > minCall) {
        i--;
        return i
        }
       return i;
      }
  }
  }

@Hierumo как всегда элегантно)) :+1:t2:

Бессовестно стащила))) и переделала с циклом for:

Сводка
const getDiet = (calories, limit) => {
    for (let i = 0; calories[i] <= limit; i++) {
        limit -= calories[i];
    }
    return i;
};

Все плохо?

var sum = 0;
var dishes = 0;

function getDiet(calories, limit) {
  for (var i = 0; i < calories.length; i++) {
    var index = calories[i];
    sum = sum + index;
    if (sum > limit) {
       return dishes
    } else if (sum === limit) {
      dishes = dishes + 1  
    } else {
      dishes = dishes + 1
    }
  }
 
}

Подскажите, насколько это хороший код? Например, насколько он читаемый? Это плохо или слишком плохо?) Знаю, что можно было обойтись без второго условия, как в первом комменте, но мне мой вариант намного понятнее.
var getDiet = function (calorieArray, caloriesLimit) {
var countCalories = 0;
for (var i = 0; i <= calorieArray.length -1; i++) {
if (countCalories <= caloriesLimit) {
countCalories += calorieArray[i];
if (countCalories > caloriesLimit) {
break;
}
}
}
return i;
}

Первый вариант

function getDiet (calories, limit) {
  var currentСalories = 0;
  var sumDishes = 0;
  for (var i = 0; i < calories.length; i++ ) {
    if (currentСalories < limit) {
    currentСalories += calories[i]
    sumDishes++;
    }
  } 
  if (currentСalories > limit) {
  sumDishes--;
  }
  return sumDishes;
}

Второй вариант

function getDiet (calories, limit) {
  var currentСalories = 0;
  var sumDishes = 0;
  while (currentСalories <= limit) {
    currentСalories += calories[sumDishes];
    sumDishes++;
  }
  if (currentСalories > limit) {
    sumDishes--;
  }
  return sumDishes;
}

Третий вариант

function getDiet (calories, limit) {
  var sumDishes = 0;
  while (calories[sumDishes] <= limit) {
    console.log('Осталось съесть '+ limit);
    console.log('Съел '+ calories[sumDishes]);
    limit -= calories[sumDishes];
    sumDishes++;
    console.log('После перекуса осталось '+ limit);
  }
  return sumDishes;
}

Как мне кажется понятно и просто написал в рамках изученного материала.

Здравствуйте!
Мой вариант:

1 лайк

Извините, так и не понял как люди красиво вставляют свой код, поэтому просто паста:

let getDiet = function (dishes, limit) {
let calories = 0;
let i = 0;
while (calories < limit) {
calories += dishes[i];
i++;
}
if (calories > limit) {
i–;
};
return i;
}
Это работает.
Это нормально?)

let getDiet = function(arrayOfDishes, calorieLimit) {
let dishes = [];
let sum = 0;
for(let i = 0; i < arrayOfDishes.length; i++) {
sum += arrayOfDishes[i];
if(sum <= calorieLimit) {
i - 1;
dishes.push(arrayOfDishes[i]);
}
}
return dishes.length;
}

let getDiet = function (caloriesArr, limit) {
  let quantity = 0;
  let calories = 0;
  while (calories + caloriesArr[quantity] <= limit) {
    calories += caloriesArr[quantity];
    quantity++;
  }
  return quantity;
}

let getDiet = function (calories, caloriesLimit) {
let dishes = 0;
let total = 0;
for (let i = 0; i < calories.length; i++) {
if (total + calories[i] > caloriesLimit) {
break;
}
dishes++;
total += calories[i];
}
return dishes;
}

Мои варианты:

let sum = 0;

let counter =0;

let getDiet = function (calorie, calorieLimit ) {

    for (let i =0; sum <= calorieLimit; i++) {
      sum += calorie[i];
      counter++
    }

console.log(sum)
return counter-1
}

И второй похожий:

let sum = 0;

let summary = [];

let getDiet = function (calorie, calorieLimit ) {

    for (let i =0; sum <= calorieLimit; i++) {
      sum += calorie[i];
      summary[i]=calorie[i] 
 }

return summary.length-1
}

В первом вывел “console.log(sum)” чтобы было видно как идет вычисление и зачем нужен “-1”.

Моё решение:

let getDiet = function (array, limit) {
  let sum = 0;
  let quantity = 0;
  for (let i = 0; i <= array.length - 1; i++) {
    sum += array[i];
    if(sum > limit) {
      break;
    }
    quantity++;
  }
  return quantity;
}
let getDiet = function (dishes, calorieLimit) {
  let countDishes = 0;
  let calorie = 0;
  for (let dish of dishes) {
    if (calorie + dish <= calorieLimit) {
      countDishes++;
      calorie += dish;
    } else {
      break; 
    }
  }
  
  return countDishes
}
let getDiet = function(calorieContent, dailyCalorie) {
  let sum = 0;
  for (let i = 0; i <= calorieContent.length; i++) {
    sum += calorieContent[i];
    if (dailyCalorie < sum ) {
      return i;
    }
   }
 }

рабочий код, проходит проверку.
let getDiet = function(caloriesOfMeals, caloriesPerDay){
let sumCalories = caloriesOfMeals[0];
let count = 0;
for (let i = 1; i < caloriesOfMeals.length; i++)
if(sumCalories <= caloriesPerDay){
sumCalories += caloriesOfMeals[i];
count++
}
return count;
};

let getDiet = function (calories, dayLimit) {
  let counter = 0;
  for (let i = 0; i < calories.length; i++) {
    dayLimit -= calories[i];
    if (dayLimit >= 0) {
      counter++;
    } 
  }
return counter;
};