#javascript #ecmascript-6 #ternary-operator
#javascript #ecmascript-6 #ternary-operator
Вопрос:
Эта программа javascript работает с троичным оператором, как и ожидалось, но не с операторами if else. Что я делаю не так?
Я пытаюсь решить некоторые базовые упражнения javascript, но я застрял в этом вопросе. https://www.w3resource.com/javascript-exercises/javascript-basic-exercise-74.php
//Working code with ternary operator
function all_max(nums) {
var max_val = nums[0] > nums[2] ? nums[0] : nums[2];
nums[0] = max_val;
nums[1] = max_val;
nums[2] = max_val;
return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));
// С оператором if-else
function all_max(nums) {
if (var max_val = nums[0] > nums[2]) {
return nums[0];
} else {
return nums[2];
}
nums[0] = max_value ;
nums[1] = max_value ;
nums[2] = max_value ;
return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));
Комментарии:
1. У вас есть
return
операторы во второй версии.return
Оператор немедленно завершает работу функции.2.
variable assignment inside if it statement
просто слишком уродливо3. @Pointy не повезло даже после удаления оператора return
4. @CodeManiac Хороший момент. переместил его за пределы оператора if
Ответ №1:
Вы должны присваивать значение в теле инструкции if / else, а не в сравнении, поэтому что-то вроде этого должно работать для вас:
function all_max(nums) {
let max_val = 0
if (nums[0] > nums[2]) {
max_val = nums[0];
} else {
max_val = nums[2];
}
nums[0] = max_val;
nums[1] = max_val;
nums[2] = max_val;
return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));
Ответ №2:
Приведенный ниже код работает
function all_max(nums) {
let max_val = nums[0] > nums[2]
if (max_val) {
return nums[0];
} else {
return nums[2];
}
nums[0] = max_value ;
nums[1] = max_value ;
nums[2] = max_value ;
return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));
вычислите max_val вне условия if и поместите результат в условие if
пусть max_val = nums[0] > nums[2]
Комментарии:
1. Убедитесь, что
max_value
переменная не определена
Ответ №3:
Объявление переменной внутри if
оператора не допускается. Удалите его.
Попробуйте это, если вам нужно только максимальное значение
function all_max(nums) {
if (nums[0] > nums[2]) {
max_value = nums[0];
} else {
max_value = nums[2];
}
return max_value;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));
если вы хотите, чтобы для всех элементов в массиве было установлено максимальное значение, используйте это
function all_max(nums) {
if (nums[0] > nums[2]) {
max_value = nums[0];
} else {
max_value = nums[2];
}
nums[0] = max_value;
nums[1] = max_value;
nums[2] = max_value;
return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));