此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]));
答案 0 :(得分:3)
您应该在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]));
答案 1 :(得分:1)
以下代码有效
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]));
在if条件之外计算max_val并将结果放在if条件中 让max_val = nums [0]> nums [2]
答案 2 :(得分:0)
不允许在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]));