Я не приследовал лаконичность, но:
var power = indicators.indexOf(‘сила’);
var flexibility = indicators.indexOf(‘гибкость’);
var endurance = indicators.indexOf(‘выносливость’);
var speed = indicators.indexOf(‘скорость’);
var agility = indicators.indexOf(‘ловкость’);
Сначала нагородил кучу переменных, искал индексы, мудрил ппц, потом подсмотрел у Jankelbrod , как она находила индексы и все стало на свои места , но на самом деле мудрил из за непонимания работы indexOf с массивами, т.к. было объяснение только по поводу работы со строкой этой функции ,потом разобрался…
Быстрее, выше, сильнее
console.log('Программ "Быстрее, выше, сильнее" by Nerealist');
var indicators = ['сила', 'гибкость', 'выносливость', 'скорость', 'ловкость'];
var levels = [8, 15, 9, 12, 11];
var trainingTime = 30;
console.log('Ваши характеристики соответственно : ' + indicators + ' ' + levels);
if (trainingTime <= 30) {
levels[indicators.indexOf('скорость')] += 3;
levels[indicators.indexOf('ловкость')] += 3;
}else if (trainingTime > 30 && trainingTime <= 60) {
levels[indicators.indexOf('гибкость')] += 3;
}else {
levels[indicators.indexOf('сила')] += 2;
levels[indicators.indexOf('выносливость')] += 2;
}
console.log('Ваши характеристики после тренировки длительность ' + trainingTime + ' мин, Сэр : ' + levels);
var indicators = [‘сила’, ‘гибкость’, ‘выносливость’, ‘скорость’, ‘ловкость’];
var levels = [8, 15, 9, 12, 11];
var trainingTime = 30;
var p = ‘сила’;
var f = ‘гибкость’;
var st = ‘выносливость’;
var sp = ‘скорость’;
var a = ‘ловкость’;
for (var i=0; i<indicators.length; i++){
if (trainingTime <= 30 && (indicators[i].indexOf(sp)>=0 || indicators[i].indexOf(a)>=0)){
levels[i]+=3;
}
if ((trainingTime > 30 && trainingTime <= 60) && indicators[i].indexOf(f)>=0){
levels[i]+=3;
зачем эти конструкты в виде else? можно же обойтись безальтернативными проверками.
остальные вообще походу подвисли на циклах и суют их куда ни глядя…
переменные какие то промежуточные вводят еще.
моё рабочее (самое простое на форуме на данный момент)
var indicators = ['сила', 'гибкость', 'выносливость', 'скорость', 'ловкость'];
var levels = [8, 15, 9, 12, 11];
var trainingTime = 30;
if (trainingTime <= 30) {
levels[indicators.indexOf('скорость')]+=3;
levels[indicators.indexOf('ловкость')]+=3;
}
if (trainingTime > 30 && trainingTime <= 60) {
levels[indicators.indexOf('гибкость')]+=3;
}
if (trainingTime > 60) {
levels[indicators.indexOf('сила')]+=2;
levels[indicators.indexOf('выносливость')]+=2;
}
объясняю: индекс слова-ключа является индексом шифра. мы его смещаем (т.е. добавляем к значению) в зависимости от прохождения проверки значения времени тренировки. притом проверки независимые, т.е. прибавляется либо к одному, либо к двум, либо к двум(2). Т.е. не нужно использовать else. Просто перезаписываем исходный шифр (levels).
Добрый день! Может вы сможете подсказать, понимаю, что решение точно неверное (нет связи между массивами), начинал с него и хотел протестировать, но не работает.
Но, по идее, оно должно работать и выводить нужные числа?
var indicators = ['сила', 'гибкость', 'выносливость', 'скорость', 'ловкость'];
var levels = [8, 15, 9, 12, 11];
var trainingTime = 30;
if (trainingTime <= 30) {
levels[3] += 3;
levels[4] += 3;
}
if (trainingTime > 30 && trainingTime <= 60) {
levels[1] += 3;
}
if (trainingTime > 60) {
levels[0] += 2;
levels[2] += 2;
}
у нас в первом массиве рандомно меняется порядок слов, а статы к ним привязаны. вам нужно это реализовать. программа абы как работать не будет, ТЗ четкое
это собственно единственная сложность, условия проходят в другой теме